Prism框架下的登录窗口跳转思路是,先注册MainWindow,然后将LoginWindow作为主窗口运行,登录完成后在LoginWindow中使用容器切换窗口为MainWindow并显示,最后关闭LoginWindow即可。
1、App.xaml.cs
public partial class App : PrismApplication { protected override Window CreateShell() { return Container.Resolve<LoginWindow>(); } protected override void RegisterTypes(IContainerRegistry containerRegistry) { containerRegistry.Register(typeof(object), typeof(MainWindow)); } }
2、LoginWindow.xaml.cs
public partial class LoginWindow : Window { private readonly IContainerExtension _container; private readonly LoginWindowViewModel _viewModel; public LoginWindow(IContainerExtension container) { InitializeComponent(); _container = container; if (!DesignerProperties.GetIsInDesignMode(this)) { _viewModel = new LoginWindowViewModel(); _viewModel.LoginSuccess += OnLoginSuccess; DataContext = _viewModel; } } private void OnLoginSuccess() { var mainWindow = _container.Resolve<MainWindow>(); mainWindow.Show(); Close(); } }