因此我们一次只能打开一个内容对话框。这可以。但是在我的应用程序中,可以打开几个可能的内容对话框,我想避免创建自己的变量,因为我会忘记将其添加到某处,并且整个应用程序都会崩溃(因为尝试打开第二个内容对话框会引发异常)
所以我的问题是:如何检查任何 ContentDialog是否打开?
注意:
答案 0 :(得分:5)
ContentDialog显示在PopupRoot中,因此使用VisualTreeHelper.GetOpenPopups()
将帮助您获取它。
var openedpopups = VisualTreeHelper.GetOpenPopups(Window.Current);
foreach (var popup in openedpopups)
{
if(popup.Child is ContentDialog)
{
//some content dialog is open.
}
}
答案 1 :(得分:3)
在目标Windows 10版本18362上经过测试的(由Vignesh接受的)答案,发现ContentDialog
决不是弹出窗口的子级。就我而言,简单的计数检查最有效:
protected bool IsAnyContentDialogOpen()
{
return VisualTreeHelper.GetOpenPopups(Window.Current).Count > 0;
}
如果此方法有任何问题,请随时发表评论。谢谢。