Prism框架下的登錄窗口跳轉思路是,將LoginWindow作為主窗口運行,登錄完成后在LoginWindow中使用容器切換窗口為MainWindow並顯示,最后關閉LoginWindow即可。
需要注意的是,如果想要在MainWindow中通過區域名稱(RegionManager.RegionName)來進行控件注入,那么需要在切換窗口時設置MainWindow的RegionManager,而RegionManager可以通過LoginWindow注入獲取(IRegionManager)。
1、App.xaml.cs
public partial class App : PrismApplication { protected override Window CreateShell() { return Container.Resolve<LoginWindow>(); } }
2、LoginWindow.xaml.cs
public partial class LoginWindow : Window { private readonly IContainerExtension _container; private readonly IRegionManager _regionManager; public LoginWindow(IContainerExtension container, IRegionManager regionManager) { InitializeComponent(); _container = container; _regionManager = regionManager; if (!DesignerProperties.GetIsInDesignMode(this)) { var viewModel = new LoginWindowViewModel(); viewModel.LoginSuccess += OnLoginSuccess; DataContext = viewModel; } } private void OnLoginSuccess() { var mainWindow = _container.Resolve<MainWindow>(); RegionManager.SetRegionManager(mainWindow, _regionManager); mainWindow.Show(); Close(); } }