Я ищу хороший способ реализовать действительно модальное диалоговое окно в Silverlight 5. Каждый найденный мной пример, который утверждает, что создает модальное диалоговое окно, на самом деле не является модальным в том смысле, что вызывающий код ждет, пока диалоговое окно не будет закрыто.
Я понимаю, что это проблема, потому что мы не можем на самом деле заблокировать поток пользовательского интерфейса, потому что он должен работать, чтобы диалог (ChildWindow) функционировал правильно.Но с добавлением TPL в SL5 и более высоким уровнем принятия Silverlight за последние несколько лет я надеюсь, что кто-то нашел способ обойти это.
Хороший репрезентативный сценарий, который я пробуюрешить - это действие (скажем, нажав кнопку или элемент меню), которое отображает диалоговое окно входа в систему и должно дождаться завершения входа в систему, прежде чем продолжить.
Наше конкретное экономическое обоснование (логическое или нет) заключается в том, что приложениене требует аутентификации пользователя;однако некоторые функции требуют доступа «Менеджер».Когда к функции обращаются (посредством нажатия кнопки или выбранного пункта меню и т. Д.), И текущий пользователь не является менеджером, мы отображаем диалоговое окно входа в систему.Когда диалог закрывается, мы снова проверяем авторизацию пользователя.Если они не авторизованы, мы показываем приятное сообщение и отклоняем действие.Если они авторизованы, мы продолжаем выполнять действие, которое обычно включает в себя изменение текущего представления на что-то новое, где пользователь может делать все, что ему будет предложено.