Диалог входа в Prism - PullRequest
       0

Диалог входа в Prism

3 голосов
/ 10 февраля 2012

Я использую Prism для приложения и мне нужен диалог входа в систему.Для подтверждения входа в систему мне нужно инициализировать некоторые данные приложения, которые загружаются Prism / MEF, поэтому я не могу поместить их в App.xmal.cs OnStartUp, поэтому я помещаю диалоговое окно входа в загрузчик InitializeShell следующим образом

   protected override void InitializeShell()
        {


            Application.Current.ShutdownMode = ShutdownMode.OnExplicitShutdown;

            //// Authenticate the current user and set the default principal
            LoginDialog auth = new LoginDialog();
            auth.WindowStartupLocation = WindowStartupLocation.CenterScreen;
            bool? dialogResult = auth.ShowDialog();

            // deal with the results
            if (dialogResult.HasValue && dialogResult.Value)
            {

                base.InitializeShell();
                Application.Current.ShutdownMode = ShutdownMode.OnMainWindowClose;

            }
            else
            {
                Application.Current.Shutdown(-1);
            }


#if SILVERLIGHT
            Application.Current.RootVisual = (Shell)this.Shell;            
#else
            Application.Current.MainWindow = (Shell)this.Shell;


            Application.Current.MainWindow.Show();
#endif
        }

Мне трудно оценить, есть ли какие-либо ловушки или недостатки, у кого-то есть комментарий

1 Ответ

5 голосов
/ 10 февраля 2012

Да, у меня была точно такая же дилемма. У вас есть только один RootVisual, но вы должны заставить пользователя войти в систему. Это распространенный сценарий, который на самом деле не рассматривается.

Вот что я сделал:

  1. Код, как будто у вас нет логина. Инициализируйте оболочку и загрузите первый модуль. В моем случае первый модуль содержит элементы безопасности.

  2. Когда ваша «Система» или как вы ее называете модулем загружена - напишите код в Initialize(), чтобы вызвать вашу процедуру входа в систему, в моем случае это SecurityService.

  3. Я использовал RegionPopupManager (пример в проекте StockTrader RI в комплекте с PRISM), чтобы показать модальное всплывающее взаимодействие.

  4. При входе в систему - просто скрыть всплывающее окно и продолжить загрузку других модулей, заполнение регионов и т.д.

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