如何在鼠标悬停时“冻结”UI(主窗口)

时间:2011-11-01 17:41:47

标签: wpf triggers freeze ismouseover

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

我试图在样式目标窗口中定义属性触发器,但它不起作用。代码是lollow,

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

事实上,这种属性触发器也无法在Grid上运行。谁能解释一下呢?

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

1 个答案:

答案 0 :(得分:0)

说实话,我不知道为什么你的代码不起作用,我认为它存在某种冲突,但我不知道为什么

无论如何你可以使用事件设定器在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>