Я использую Prism 7.1 WPF и Prism Unity.
Перед запуском основного <prism:PrismApplication/>
или когда появляется главное окно Prism, я хочу иметь модальное всплывающее окно для ввода пользователем некоторых данных.
Входные данные будут для входа пользователя в систему и, что более важно, для определения, какие модули Prism загружать в приложение.
Как бы я поступил так? Я попытался отобразить пользовательское окно WPF в следующих PrismApplication
методах перегрузки, но либо окно не появляется, либо закрывается все приложение:
public partial class App : PrismApplication
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
}
protected override IModuleCatalog CreateModuleCatalog()
{
return base.CreateModuleCatalog();
}
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
}
protected override Window CreateShell()
{
return ServiceLocator.Current.GetInstance<MainWindow>();
}
protected override void OnInitialized()
{
base.OnInitialized();
}
}
Например, если я вызову отображение пользовательского окна WPF в CreateModuleCatalog (), оно отобразится, однако все приложение закроется:
protected override IModuleCatalog CreateModuleCatalog()
{
LoginWindow loginWindow = new LoginWindow();
if (loginWindow.ShowDialog() == true)
{
// OK
}
else
{
// Cancel
}
return base.CreateModuleCatalog();
}
... и если я помещу вызов в OnStartup (), он не будет отображаться, пока все не выполнятся другие переопределения и не отобразится главное окно Prism (что слишком поздно для обработки ввод пользователя):
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
LoginWindow loginWindow = new LoginWindow();
if (loginWindow.ShowDialog() == true)
{
// OK
}
else
{
// Cancel
}
}
Я поиграл с разными методами, изменил положение вызовов на метод базового класса и т. Д., Но, похоже, он не работает. Кто-нибудь может подсказать, как это можно сделать?
Причина этого заключается в том, что я не хочу загружать целые модули в приложение, если мне это не нужно (на основе пользовательского ввода).
Спасибо ....