0

有点卡住了,可以使用一些帮助。要实现:每当在 StackPanel 外部单击时 - 它的 Visibilty 应更改为隐藏。

很简单,我写了下一个条件:

private void pnlLeftMenu_LostFocus(object sender, RoutedEventArgs e)
    {
        if (pnlLeftMenu.IsFocused == false)
        {
            pnlLeftMenu.Visibility = Visibility.Hidden;
        }
    }

其中 pnlLeftMenu 是应该触发的面板。这是带有描述属性的 xaml 片段:

    <StackPanel x:Name="pnlLeftMenu"                    
                Orientation="Vertical" 
                Height="475" 
                HorizontalAlignment="Left" 
                VerticalAlignment="Bottom"
                Margin="57,0,0,0"
                Visibility="Hidden"
                Background="{StaticResource BlueFadedBrush}" 
                IsVisibleChanged="pnlLeftMenu_IsVisibleChanged" 
                Focusable="True"
                LostFocus="pnlLeftMenu_LostFocus" >

不用担心它已经被隐藏了——它是一个侧边菜单,点击按钮就可以看到。那部分工作正常。

所以问题是:我错过了什么?因为当它看起来像这样时 - 面板外部的点击没有任何反应。

4

1 回答 1

1

您可以将单击事件添加到堆栈面板的父容器并在单击事件处理程序中尝试像

   if (pnlLeftMenu.IsVisible)
    {
        pnlLeftMenu.Visibility = Visibility.Hidden;
    }
于 2016-07-13T03:27:10.617 回答