中介者模式用于视图模型之间的通信,而不是视图和视图模型之间的通信。
如果您想处理视图模型中的对话框,您可以使用这样的对话框服务。
不过,当我想创建一个应用程序登录对话框时,我会这样做。
在 app.xaml.cs 中的 OnStartup()
- 创建登录视图
- 创建登录视图模型
- 将 loginview 的 datacontext 设置为 loginviewmodel
- 显示登录视图
- 编辑:loginviewmodel 检查密码等等,如果没问题,则在 loginviewmodel 中设置状态,例如 IsValidUser=true;
- 检查结果
- 编辑:如果 dialogresult == "OK" 和 IsValidUser=true
- 打开的主窗口
这是我的一些代码
protected override void OnStartup(StartupEventArgs e)
{
//...
ShutdownMode = ShutdownMode.OnExplicitShutdown;
var vm = new LoginVM();
var loginwindow = new LoginWindow();
loginwindow.DataContext = vm;
if (!result.HasValue || !result.Value || !IsValidUser)
{
Shutdown();
return;
}
//...
var mainWindow = new MainWindow(new MainWindowViewModel(vm.Settings));
mainWindow.Loaded += (sender, args) => splashScreen.Close();
this.MainWindow = mainWindow;
ShutdownMode = ShutdownMode.OnMainWindowClose;
this.MainWindow.Show();
}
ps:这是我的应用程序中我首先使用视图的唯一部分。其余的都是先查看模型,这对我来说在做 mvvm 时要容易得多。