从睡眠状态返回时,任务栏未重叠

时间:2016-11-01 01:19:08

标签: c# wpf windows taskbar

我的应用程序从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>

睡前 enter image description here 睡了之后 enter image description here

1 个答案:

答案 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;
    }
}