使WPF控件在失去焦点时消失
我有一个StackPanel,它被用作其他菜单控件的容器。我希望在单击UI上的其他位置时StackPanel消失(类似于典型的菜单/上下文菜单)。我正在为如何做到这一点而挣扎。有什么建议吗?我尝试过下面这种样式的事件触发器,但它似乎不能正常工作使WPF控件在失去焦点时消失,wpf,Wpf,我有一个StackPanel,它被用作其他菜单控件的容器。我希望在单击UI上的其他位置时StackPanel消失(类似于典型的菜单/上下文菜单)。我正在为如何做到这一点而挣扎。有什么建议吗?我尝试过下面这种样式的事件触发器,但它似乎不能正常工作 <StackPanel.Style> <Style TargetType="{x:Type StackPanel}"> <Style.Triggers> <Even
<StackPanel.Style>
<Style TargetType="{x:Type StackPanel}">
<Style.Triggers>
<EventTrigger RoutedEvent="LostMouseCapture" >
<BeginStoryboard>
<Storyboard>
<DoubleAnimation From="1" To="0" Duration="0:0:0.1"
Storyboard.TargetProperty="Opacity"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Style.Triggers>
</Style>
</StackPanel.Style>
如下设置stackPanel的触发器:
<EventTrigger RoutedEvent="MouseEnter" >
<BeginStoryboard>
<Storyboard>
<DoubleAnimation To="1" Duration="0:0:0.1"
Storyboard.TargetProperty="Opacity"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
并将此标记添加到窗口(以及单击时要隐藏堆栈面板的其他控件):
您还可以在没有鼠标交互的控件上设置
ishitestvisible=False
,这样就不必向它们添加触发器。这似乎不起作用。XAML标记intellisense似乎表明MouseDown不是有效的事件,这很奇怪,因为MouseDown是UIElement的事件之一。您运行了它吗?有时intellisense会显示不相关的错误。
<Window.Triggers>
<EventTrigger RoutedEvent="MouseDown">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation To="0" Duration="0:0:0.1"
Storyboard.TargetName="disappearingStackPanel"
Storyboard.TargetProperty="Opacity"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Window.Triggers>