Я работаю над приложением, использующим WPF, MVVM, Prism и MEF.
Я использую комбинацию навигации с запросом навигации, контроллеров с управлением представлениями с помощью диспетчера региона и событий через событиеагрегатор для запуска приложения в одном окне.Я использую подход, основанный на представлении, аналогично тому, как работает Stock Trader RIЭто прекрасно работает, когда любой код модели представления, который будет взаимодействовать с пользовательским интерфейсом (индикатор занятости), запускается пользователем, но когда он запускается за кулисами, могут быть проблемы.
Я знаю, что это может показатьсяплохая реализация, но я думаю, что у меня есть действительный сценарий.Мой конкретный пример связан с логином.
В настоящее время приложение запускается и загружает оболочку.Вид входа в систему загружается в основную область содержимого оболочки.Когда пользователь нажимает «войти», отображается индикатор занятости и выполняется вход в систему служб клиентских приложений.Когда вход в систему завершен, индикатор занятости исчезает, и экран переходит к домашнему экрану пользователя.
Это работает хорошо, потому что вход в систему и навигация инициируются пользователем, нажимающим кнопку входа в систему.
Так что теперь у меня есть новое требование, чтобы пользователь мог выбрать автоматический вход в форму входа в систему, чтобы в следующий раз, когда пользователь запускал приложение, представление входа в систему не отображалось, и вход происходил за кулисами..
Теперь, если я просто хочу вызвать функцию автоматического входа в систему, проблем нет, это само по себе не имеет взаимодействия с пользовательским интерфейсом и будет работать нормально.Но вход в систему занимает несколько секунд, и я хочу отобразить индикатор занятости.
Проблема в том, где я могу инициировать автоматический вход в систему?Конструктор модели представления оболочки?Модель представления оболочки PartImportsSatisfied реализация?В любом из этих мест представление оболочки (которое содержит мой индикатор занятости) еще не загружено.В результате ни один из необходимых мне ресурсов, таких как регионы и региональные менеджеры, недоступен.Итак, что может быть хорошим способом для меня реализовать это:
Проверьте, должен ли предыдущий пользователь автоматически входить в систему (выяснил эту часть)
If yes then
Show busy indicator
Attempt to auto login
If auto login was success
Hide busy indicator
Navigate to user home screen
Else
Hide busy indicator
Navigate to login screen
Else
Hide busy indicator
Navigate to the login screen
Любые идеи очень ценятся.