问题描述
如果直接启动MainWindow再用导航是没有问题的,_regionManager.RequestNavigate能正常跳转到指定的区域,如果用登录窗口跳转到主窗口则会失效。百度了很多方法,基本上是在App.cs中重写
protected override void InitializeShell(Window shell)
{
}
但是这个方法则需要吧登录窗体变成一个用户控件,这不是我想要的
于是看到了这个方法;
在登录窗口的后台代码中
private readonly IContainerExtension _container;
private readonly IRegionManager _regionManager;
public LoginMain(IContainerExtension container, IRegionManager regionManager)
{
InitializeComponent();
_container = container;
_regionManager = regionManager;
}
private async void LoginBtn_Click(object sender, RoutedEventArgs e)
{
/*登录判断代码省略*/
// 下面是判断登录成功后打开主窗体
var mainWindow = _container.Resolve<MainWindow>();
RegionManager.SetRegionManager(mainWindow, _regionManager);
mainWindow.Show();
Close();
}