C# 如何创建包含在其中的弹出窗口';为了鼠标事件,是否使用了父控件?
我有一个包含弹出窗口的控件。我试图关闭弹出窗口时,有人点击以外的控制。这是我的代码中设置问题的部分:C# 如何创建包含在其中的弹出窗口';为了鼠标事件,是否使用了父控件?,c#,wpf,C#,Wpf,我有一个包含弹出窗口的控件。我试图关闭弹出窗口时,有人点击以外的控制。这是我的代码中设置问题的部分: AddHandler(Mouse.PreviewMouseDownOutsideCapturedElementEvent, new MouseuttonEventHandler(HandleOutsideClick), true); 现在,每当我在弹出窗口中单击时,都会引发PreviewMouseDownOutsideCapturedElementEvent。我是不是误解了这件事?我是否可以将
AddHandler(Mouse.PreviewMouseDownOutsideCapturedElementEvent, new MouseuttonEventHandler(HandleOutsideClick), true);
现在,每当我在弹出窗口中单击时,都会引发PreviewMouseDownOutsideCapturedElementEvent。我是不是误解了这件事?我是否可以将弹出窗口视为控件的一部分,这样它就不会引发此事件 这有用吗
<Popup Name="Pop" LostFocus="ClosePop"/>
private void ClosePop(object sender, RoutedEventArgs e)
{
Pop.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
}
私有void ClosePop(对象发送方,路由目标)
{
Pop.Visibility=Windows.UI.Xaml.Visibility.Collapsed;
}
将XAML代码放在.XAML页面中,将C#代码放在相关的.XAML.cs文件中
注意:您可能需要将焦点放在弹出窗口上,然后才能工作,这可能会自动完成;我没有在弹出窗口上这样做,但我已经在其他对象上这样做了
更新:这对我来说很有效,单击显示Test1的文本框打开弹出窗口,单击标记为Test2的文本框关闭弹出窗口:
<Grid Background="White">
<StackPanel>
<TextBox Foreground="Black" LostFocus="ClosePop" GotFocus="OpenPop" Height="50">Test1</TextBox>
<TextBox Foreground="Black" Height="50">Test2</TextBox>
</StackPanel>
<Popup Name="Pop" Height="50" Width="50">
<TextBlock Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center">Pop!</TextBlock>
</Popup>
</Grid>
private void ClosePop(object sender, RoutedEventArgs e)
{
Pop.IsOpen = false;
}
private void OpenPop(object sender, RoutedEventArgs e)
{
Pop.IsOpen = true;
}
测试1
测试2
砰!
私有void ClosePop(对象发送方,路由目标)
{
Pop.IsOpen=false;
}
私有void OpenPop(对象发送方,路由目标)
{
Pop.IsOpen=真;
}
尝试使用LostFocus方法,并在名为的方法中以编程方式关闭它。我在弹出窗口中附加了一个文本框,文本框输入过滤弹出项目。当我在整个控件之外单击时,我正试图关闭弹出窗口。我不确定在那种情况下我如何恰当地给出弹出窗口的焦点。嗯,你在桌面WPF中吗?我可以尝试构建一些东西并解决它,但是桌面WPF与Windows应用商店WPF不同,所以我需要知道您正在使用哪个。是的,我在桌面WPF中。这在我描述的上下文中确实有效。我意识到我一直在以错误的方式处理我的特定解决方案,并对其进行了修改。