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