So we can only have one opened content dialog at a time. This is fine. But in my app there are several possible content dialogs that can be opened, and I would like to avoid making my own variable because I can forget to add it somewhere and the whole app will crash (because trying to open second content dialog throws exception).
So my question is: How to check if any ContentDialog is open?
Note:
ContentDialog is shown in the PopupRoot so using VisualTreeHelper.GetOpenPopups()
will help you get it.
var openedpopups = VisualTreeHelper.GetOpenPopups(Window.Current);
foreach (var popup in openedpopups)
{
if(popup.Child is ContentDialog)
{
//some content dialog is open.
}
}
Tested accepted answer (by Vignesh) on target Windows 10 build 18362 and find that ContentDialog
is never a child of popup. In my case simple check of the count works best:
protected bool IsAnyContentDialogOpen()
{
return VisualTreeHelper.GetOpenPopups(Window.Current).Count > 0;
}
Please feel free to comment if there's any problems with this approach. Thanks.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With