gpt4 book ai didi

xaml - UWP Light 关闭 ContentDialog

转载 作者:行者123 更新时间:2023-12-02 00:27:07 30 4
gpt4 key购买 nike

有没有办法让 ContentDialog 灯消失?这样,当用户单击 ContentDialog 之外的任何内容时,它应该关闭。

谢谢。

最佳答案

默认情况下,ContentDialog 放置在 PopupRoot 中。在它的后面,有一个矩形,它会变暗并阻止与应用程序中的其他元素交互。您可以在 VisualTreeHelper 的帮助下找到它,并向其注册 Tapped 事件,这样当它被点击时,您就可以隐藏 ContentDialog

您可以在 ContentDialog 代码外部调用 ShowAsync 之后执行此操作,也可以在 ContentDialog 代码内部执行此操作。就我个人而言,我实现了一个派生自 ContentElement 的类,并重写 OnApplyTemplate,如下所示:

protected override void OnApplyTemplate()
{
// this is here by default
base.OnApplyTemplate();

// get all open popups
// normally there are 2 popups, one for your ContentDialog and one for Rectangle
var popups = VisualTreeHelper.GetOpenPopups(Window.Current);
foreach (var popup in popups)
{
if (popup.Child is Rectangle)
{
// I store a refrence to Rectangle to be able to unregester event handler later
_lockRectangle = popup.Child as Rectangle;
_lockRectangle.Tapped += OnLockRectangleTapped;
}
}
}

OnLockRectangleTapped中:

private void OnLockRectangleTapped(object sender, TappedRoutedEventArgs e)
{
this.Hide();
_lockRectangle.Tapped -= OnLockRectangleTapped;
}

关于xaml - UWP Light 关闭 ContentDialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39317526/

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