使WPF控件在失去焦点时消失

使WPF控件在失去焦点时消失,wpf,Wpf,我有一个StackPanel,它被用作其他菜单控件的容器。我希望在单击UI上的其他位置时StackPanel消失(类似于典型的菜单/上下文菜单)。我正在为如何做到这一点而挣扎。有什么建议吗?我尝试过下面这种样式的事件触发器,但它似乎不能正常工作 <StackPanel.Style> <Style TargetType="{x:Type StackPanel}"> <Style.Triggers> <Even

我有一个StackPanel,它被用作其他菜单控件的容器。我希望在单击UI上的其他位置时StackPanel消失(类似于典型的菜单/上下文菜单)。我正在为如何做到这一点而挣扎。有什么建议吗?我尝试过下面这种样式的事件触发器,但它似乎不能正常工作

<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>