2016-11-01 24 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; 
    } 
}