2016-11-01 22 views
0

我的应用程序以WindowStyle设置为None开始,ResizeMode设置为NoResize并将WindowState设置为最大化。我将Windows(Windows 10)发送到睡眠模式,当我从睡眠模式中唤醒时,应用程序将调整大小,以便Windows任务栏可见。在进入睡眠模式之前,由于WindowStyle为无,应用程序隐藏了任务栏。从睡眠中返回时不重叠任务栏

如何将任务栏放在我的应用程序后面?我尝试过捕获SizeChanged事件并重新最大化它,或者将样式更改为其他内容并返回None,并且没有任何结果。

这可以用这样的主窗口的简单应用证明:

<Window x:Class="MaximizedNoChrome.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:MaximizedNoChrome" 
     mc:Ignorable="d" 
     Title="MainWindow" WindowState="Maximized" WindowStyle="None" Background="IndianRed"> 
    <Grid> 

    </Grid> 
</Window> 

休眠前 enter image description here 后睡眠 enter image description here

+0

做工精细这里 – Jim

+0

有趣。它必须是Windows设置。我有一个全新的华硕笔记本电脑,它每次都这样做。其他人是否会遇到这种情况? –

+0

单击应用程序后,TaskBar是否隐藏? – XAMlMAX

回答

0

我不知道这是不是最好的答案,但这是解决这个问题的一种方法。我订阅了PowerModeChanged系统事件来捕获resume事件,然后在Activated事件中折叠/显示和Normal/Maximize窗口。

如果您有更好的解决方案,请让我知道。

SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged; 

...

private void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e) 
{ 
    if (e.Mode == PowerModes.Resume) 
    { 
     _resumed = true; 
    } 
} 

...

private void Window_Activated(object sender, EventArgs e) 
{ 
    if (_resumed) 
    { 
     Visibility = Visibility.Collapsed; 
     Visibility = Visibility.Visible; 
     WindowState = WindowState.Normal; 
     WindowState = WindowState.Maximized; 
     _resumed = false; 
    } 
}