2016-11-01 7 views
0

Мое приложение начинается с того, что 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

+0

Работает хорошо здесь – Jim

+0

Интересно. Это должна быть настройка Windows. У меня новый ноутбук ASUS, и он делает это каждый раз. Кто-нибудь еще испытывает это? –

+0

Скрывает ли TaskBar после нажатия на приложение? – XAMlMAX

ответ

0

Я не знаю, если это лучший ответ , но это один из способов устранить эту проблему. Я подписываюсь на системное событие PowerModeChanged, чтобы захватить событие возобновления, а затем я обрушиваю/показываю и нормальное/увеличиваю окно в активированном событии.

Если у вас есть лучшее решение, пожалуйста, дайте мне знать.

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