我的应用程序从WindowStyle设置为None开始,ResizeMode设置为NoResize,WindowState设置为Maximized。我将Windows(Windows 10)发送到睡眠模式,当我从睡眠模式唤醒时,应用程序会调整大小,以便可以看到Windows任务栏。在进入睡眠模式之前,应用程序隐藏任务栏,因为WindowStyle为None。
如何将任务栏保留在我的应用程序之后?我已经尝试捕获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>
答案 0 :(得分: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;
}
}