Как «заморозить» пользовательский интерфейс (главное окно) при наведении курсора мыши - PullRequest
0 голосов
/ 01 ноября 2011

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

0 голосов
/ 01 ноября 2011

Ну, если честно, я не знаю, почему ваш код не работает, я думаю, что он вступает в какой-то конфликт, но я не знаю, почему

В любом случае вы можете сделать это в 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> 
...