Как "заморозить" пользовательский интерфейс (главное окно), когда мышь находится над

Чего я хочу добиться, так это того, чтобы при наведении курсора мыши на главное окно все элементы пользовательского интерфейса замерзали, что, я думаю, можно сделать, установив для 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> 
Другие вопросы по тегам