После пары часов поиска в Google мне не удалось найти никаких комментариев по этому вопросу. У нас есть WindowStyle=None
окно с прозрачным фоном и позволяет прозрачность и не отображается на панели задач, все довольно нормально. Вот XAML, чтобы вы могли проверить себя:
<Window x:Class="AltTabTest.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Name="TestWindow" Title="TestWindow"
WindowStyle="None" AllowsTransparency="True" ResizeMode="NoResize"
Background="Transparent" ShowInTaskbar="False"
Width="816" Height="820">
<Grid>
<Border BorderThickness="0" Background="LightBlue" CornerRadius="15" />
</Grid>
Теперь, что странно, когда вы компилируете и запускаете это окно, выполните следующие шаги:
- Нажмите на Показать рабочий стол, чтобы скрыть все приложения
- Alt + Tab к тестовому приложению WPF
- Щелкните за пределами области «Голубая граница» (в рабочую область рабочего стола)
- Наблюдайте, как приложение WPF Test магически исчезает
- По выбору Alt + Tab для любого другого работающего приложения и наблюдайте, как волшебное приложение WPF Test снова появляется
Так что мой вопрос: какого черта здесь происходит ?! Это ожидаемое поведение? Если так, есть ли способ обойти это?
Такое ощущение, что приложение WPF не действительно получает фокус после разрешения клавиши Alt + Tab. Обратите внимание, что это тестируется в Windows 7, и у меня не было возможности проверить это в Vista или XP. Мне бы хотелось, чтобы приложение действительно фокусировалось, но если это невозможно, то мне интересно, есть ли способ перехватывать и игнорировать действия Alt + Tab. Приложение, которое планируется исправить, является приложением в режиме блокировки, поэтому пользователи никогда не смогут по-настоящему избавиться от его работы на рабочем столе. Спасибо за любые советы, примеры, понимание или указание в правильном направлении, спасибо! =) * * Тысяча двадцать пять