Только один ContentDialog может быть открыт в любое время ошибки - PullRequest
1 голос
/ 16 мая 2019

Я унаследовал сложное приложение C # / UWP, изобилующее сбоями из-за этой проблемы: «В любой момент может быть открыт только один ContentDialog».

Первоначальный разработчик приложения вставил множество диалогов, многие из которых были вызваны ошибками, и, по-видимому, не пытался отследить, пытался ли он открыть диалог поверх другого.

Есть ли какой-то грубый способ, которым я могу написать что-то, что либо закрывает любой открытый диалог, либо, по крайней мере, позволяет мне обнаружить это условие перед открытием другого диалога?

Я понимаю, что должен подробно разобраться в приложении и попытаться выяснить причину проблемы. К сожалению, это очень большое и очень важное приложение, срок которого истек, и клиенту просто нужно быстро исправить его, чтобы он заработал.

1 Ответ

1 голос
/ 16 мая 2019

На самом деле рекомендуется и лучше всего поддерживать диалоги из вашего исходного кода.

И если вам действительно нужно быстрое исправление, см. Следующий пост от Дэвида. Используйте этот метод: VisualTreeHelper.GetOpenPopups (Window) , чтобы обнаружить открытые всплывающие окна, которые также содержат необходимый диалог контента. Тогда делай что хочешь:

 var popups=VisualTreeHelper.GetOpenPopups(Window.Current);
        foreach (var popup in popups)
        {
            if(popup.Child is ContentDialog)
            {

            }
        }

Но мне нужно еще раз уточнить, что на самом деле это не лучшая практика, поэтому лучше не использовать VirtualTreeHelper, поскольку у вас есть исходный код. Я настоятельно рекомендую вам проверить исходный код, чтобы поддерживать все свои диалоги самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...