【发布时间】:2011-11-01 06:30:28
【问题描述】:
我刚开始使用 Caliburn Micro WindowManager。
我已经设法显示一个包含我的 WPF 视图的模式对话框。
我需要从对话框中返回一个对象。最好的方法是什么?
背景 - 这是一个登录对话框。我需要验证用户名和密码并返回用户配置信息。
【问题讨论】:
标签: wpf caliburn.micro
我刚开始使用 Caliburn Micro WindowManager。
我已经设法显示一个包含我的 WPF 视图的模式对话框。
我需要从对话框中返回一个对象。最好的方法是什么?
背景 - 这是一个登录对话框。我需要验证用户名和密码并返回用户配置信息。
【问题讨论】:
标签: wpf caliburn.micro
我可以想到两种方法来做到这一点。我假设您的 Login 视图模型类派生自 Caliburn.Micro.Screen。
1) 让视图模型(代表您的登录屏幕)公开一个返回用户配置的属性。然后,您可以在成功登录后访问它,如下所示:
var windowManager = new WindowManager();
var login = new MyLoginViewModel();
if (windowManager.ShowDialog(login) == true)
{
var configurationInfo = login.MyUserConfigurationInfo;
}
2) 成功登录后,将用户配置信息添加到应用程序的资源字典中。下面的示例显示了您在登录视图模型中的“登录”方法中设置它。
void Login()
{
/* Authentication Logic success */
App.Current.Resources["UserConfigurationInfo"] = new UserConfigurationInfo();
TryClose(true);
}
【讨论】:
我不知道 Caliburn Micro WindowManager,但如果您的模态对话框视图有一个视图模型,那么将视图模型用于您可以访问您的对象的地方怎么样?
在我的项目中有一个 ILoginViewModel,我在我的 app.cs 中的 DialogResult=true 之后使用它。 (我使用 MEF 导出此信息,因此我的模块很容易访问)
【讨论】: