首页 > 解决方案 > 如何检查任何 ContentDialog 是否打开?

问题描述

所以我们一次只能打开一个内容对话框。这可以。但是在我的应用程序中,可以打开几个可能的内容对话框,我想避免创建自己的变量,因为我可能忘记在某处添加它并且整个应用程序将崩溃(因为尝试打开第二个内容对话框会引发异常) .

所以我的问题是:如何检查是否有任何ContentDialog 已打开?

笔记:

  1. 我不想检查特定的 ContentDialog。
  2. 我想避免创建自己的变量。

标签: c#uwp

解决方案


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.
   }
}

推荐阅读