Как "заморозить" пользовательский интерфейс (главное окно), когда мышь находится над
Чего я хочу добиться, так это того, чтобы при наведении курсора мыши на главное окно все элементы пользовательского интерфейса замерзали, что, я думаю, можно сделать, установив для Window.IsEnabled значение false, и после того, как мышь покинет главное окно, все должно быть вернуться к нормальной жизни.
Я попытался определить триггер свойства в окне назначения стиля, но он не работает. Код такой же забавный,
<Style.Triggers>
<Trigger Property="Window.IsMouseOver" Value="True">
<Setter Property="Window.IsEnabled" Value="false"/>
</Trigger>
</Style.Triggers>
Фактически, этот тип триггера свойства не будет работать и в Grid. Кто-нибудь может дать некоторые объяснения?
Я также попытался явно использовать события MouseEnter и MouseLeave в Window и установить логику отключения / включения в обработчиках. Это работает. Интересно, возможно ли это сделать в XAML?
1 ответ
Ну, если честно, я не знаю, почему ваш код не работает, я думаю, что он вступает в какой-то конфликт, но я не знаю, почему
В любом случае вы можете сделать это в XAML с помощью Eventsetter. Это не так элегантно, но работает
<Window.Triggers>
<EventTrigger RoutedEvent="Window.MouseEnter">
<BeginStoryboard>
<Storyboard Name="sb">
<BooleanAnimationUsingKeyFrames Storyboard.TargetProperty="IsEnabled" >
<BooleanKeyFrameCollection>
<DiscreteBooleanKeyFrame Value="False" KeyTime="0:0:0:1"></DiscreteBooleanKeyFrame>
</BooleanKeyFrameCollection>
</BooleanAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Window.Triggers>