我刚刚开始使用Caliburn Micro WindowManager。
我设法显示一个包含我的WPF视图的模式对话框。
我需要从对话框中返回一个对象。这样做的最佳方式是什么?
背景 - 这是一个登录对话框。我需要验证用户名和密码并返回用户配置信息。
答案 0 :(得分:1)
我不知道Caliburn Micro WindowManager但是如果你的模态对话框视图有一个viewmodel,那么只需要使用viewmodel来访问你的对象?
在我的项目中有一个ILoginViewModel,我在app.cs.中使用DialogResult = true之后使用它。 (我用MEF导出这些信息,因此很容易访问我的模块)
答案 1 :(得分:1)
我可以通过两种方式来做到这一点。我假设您的Login viewmodel类派生自Caliburn.Micro.Screen。
1)让视图模型(代表您的登录屏幕)公开一个返回用户配置的属性。然后,您可以在成功登录后访问它,如下所示:
var windowManager = new WindowManager();
var login = new MyLoginViewModel();
if (windowManager.ShowDialog(login) == true)
{
var configurationInfo = login.MyUserConfigurationInfo;
}
2)成功登录后,将用户配置信息添加到应用程序的资源字典中。下面的示例显示您在登录视图模型中的“Login”方法中进行设置。
void Login()
{
/* Authentication Logic success */
App.Current.Resources["UserConfigurationInfo"] = new UserConfigurationInfo();
TryClose(true);
}