0

我想要实现的是,当鼠标悬停在主窗口上时,所有的 UI 元素都应该冻结,我认为可以通过将 Window.IsEnabled 设置为 false 来完成,鼠标离开主窗口后,一切都应该是恢复正常。

我尝试在样式目标窗口中定义属性触发器,但它不起作用。代码就像lolow,

<Style.Triggers>
    <Trigger Property="Window.IsMouseOver" Value="True">
        <Setter Property="Window.IsEnabled" Value="false"/>
    </Trigger>
</Style.Triggers>

事实上,这种属性触发器也不适用于 Grid。任何人都可以做出一些解释吗?

我还尝试在 Window 上显式使用 MouseEnter 和 MouseLeave 事件,并在处理程序中设置禁用/启用逻辑。这行得通。我想知道是否可以在 XAML 中执行此操作?

4

1 回答 1

0

老实说,我不知道为什么您的代码不起作用,我认为它会发生某种冲突,但我不知道为什么

无论如何,您可以使用 eventsetter 在 XAML 中完成它,它不是那么优雅,但它可以工作

<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> 
于 2011-11-01T18:51:51.950 回答