在Caliburn Micro中使用WindowManager时,如何从对话框返回对象

时间:2011-11-01 06:30:28

标签: wpf caliburn.micro

我刚刚开始使用Caliburn Micro WindowManager。

我设法显示一个包含我的WPF视图的模式对话框。

我需要从对话框中返回一个对象。这样做的最佳方式是什么?

背景 - 这是一个登录对话框。我需要验证用户名和密码并返回用户配置信息。

2 个答案:

答案 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);
}