WPF会忽略弹出窗口

时间:2015-12-17 14:08:43

标签: c# wpf popup

在我的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");
    }
}

0 个答案:

没有答案