gpt4 book ai didi

c# - 为了鼠标事件,如何将 Popup 包含在它的父控件中?

转载 作者:行者123 更新时间:2023-11-30 12:44:57 26 4
gpt4 key购买 nike

我有一个包含弹出窗口的控件。每当有人在控件外单击时,我都试图关闭弹出窗口。这是我的代码中设置问题的部分:

AddHandler(Mouse.PreviewMouseDownOutsideCapturedElementEvent, new MouseuttonEventHandler(HandleOutsideClick), true);

现在,每当我在 Popup 中单击时,它都会引发 PreviewMouseDownOutsideCapturedElementEvent。我误解了这个事件吗?我可以做些什么来让 Popup 被视为控件的一部分,以便它不会引发此事件?

最佳答案

这个有用吗?

<Popup Name="Pop" LostFocus="ClosePop"/>


private void ClosePop(object sender, RoutedEventArgs e)
{
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;
}

关于c# - 为了鼠标事件,如何将 Popup 包含在它的父控件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26183573/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com