Wpf 如何';冻结&x27;鼠标悬停在上方时的UI(主窗口)

Wpf 如何';冻结&x27;鼠标悬停在上方时的UI(主窗口),wpf,triggers,freeze,ismouseover,Wpf,Triggers,Freeze,Ismouseover,我想要实现的是,当鼠标悬停在主窗口上时,所有UI元素都应该冻结,我认为可以通过将window.IsEnabled设置为false来实现,当鼠标离开主窗口后,一切都应该恢复正常 我尝试在样式目标窗口中定义属性触发器,但它不起作用。代码很低 <Style.Triggers> <Trigger Property="Window.IsMouseOver" Value="True"> <Setter Property="Window.IsEnabled

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

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

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

事实上,这种属性触发器在网格上也不起作用。有人能解释一下吗


我还尝试在窗口上显式使用MouseEnter和MouseLeave事件,并在处理程序中设置禁用/启用逻辑。这很有效。我想知道是否有可能在XAML中实现这一点?

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

不管怎样,您可以使用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> 


Hmm。。。。如果您完全禁用输入,请不要忘记禁用触摸屏和键盘!如何禁用触摸和键盘?我的观点是,如果我想使用键盘与您的程序交互,我可能可以使用alt+tab切换到您的程序,因为您只响应鼠标事件。您应该尝试检测任何输入焦点,但即使如此,如果您必须创建这种奇怪的行为。。。你可能想重新考虑你的设计?