Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF忽略弹出窗口外的单击_C#_Wpf_Popup - Fatal编程技术网

C# WPF忽略弹出窗口外的单击

C# WPF忽略弹出窗口外的单击,c#,wpf,popup,C#,Wpf,Popup,在我的WPF应用程序中,我想在单击按钮时显示一个弹出窗口 如果我在弹出窗口外单击,我希望弹出窗口关闭。我可以通过在弹出窗口上设置StaysOpen=False来实现这一点 但是当我在弹出窗口外单击时,我希望WPF忽略关闭弹出窗口的初始单击。例如,如果我在弹出窗口外单击另一个按钮,我不希望该按钮执行click方法 如何使WPF在弹出窗口打开时忽略其外部的单击 下面是一些示例代码。当我点击“弹出”按钮时弹出窗口打开,当我点击外部时关闭。但我可以在弹出窗口打开时单击“PrintMessage”按钮,其

在我的WPF应用程序中,我想在单击按钮时显示一个弹出窗口

如果我在弹出窗口外单击,我希望弹出窗口关闭。我可以通过在弹出窗口上设置
StaysOpen=False
来实现这一点

但是当我在弹出窗口外单击时,我希望WPF忽略关闭弹出窗口的初始单击。例如,如果我在弹出窗口外单击另一个按钮,我不希望该按钮执行click方法

如何使WPF在弹出窗口打开时忽略其外部的单击

下面是一些示例代码。当我点击“弹出”按钮时弹出窗口打开,当我点击外部时关闭。但我可以在弹出窗口打开时单击“PrintMessage”按钮,其单击事件将触发。我希望它的点击事件不要触发

<Window x:Class="Test.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <Popup x:Key="pop" StaysOpen="False" Placement="MousePoint">
            <UniformGrid Background="Red">
                <Button>Btn1</Button>
                <Button>Btn2</Button>
            </UniformGrid>
        </Popup>
    </Window.Resources>
    <UniformGrid>
        <Button Click="Popup_Click">Popup</Button>
        <Button Click="PrintMessage_Click">PrintMessage</Button>
    </UniformGrid>
</Window>

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void Popup_Click(object sender, RoutedEventArgs e)
    {
        Popup pop = (Popup)Resources["pop"];
        pop.IsOpen = true;
    }

    private void PrintMessage_Click(object sender, RoutedEventArgs e)
    {
        Debug.WriteLine("Test");
    }
}

Btn1
Btn2
弹出窗口
打印消息
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
}
私有无效弹出窗口\u单击(对象发送者,路由目标)
{
弹出弹出=(弹出)资源[“弹出”];
pop.IsOpen=真;
}
私有无效打印消息\u单击(对象发送者,路由目标e)
{
Debug.WriteLine(“测试”);
}
}