【发布时间】:2011-09-10 15:31:43
【问题描述】:
我花了两天时间试图弄清楚。
我已经实现了两种使用 mvvm 弹出窗口的方法
第一种方法用法示例:
_childWindowController
.ShowDialogWithResult<AddNationalityPopup,AddNationalityPopupModel, AddNationalityResult>(
(result, a) =>
{
if (a.DialogResult.HasValue && a.DialogResult.Value)
{
if (result.NationalityCountryId.HasValue)
{
Background.NationalityCountryId = result.NationalityCountryId.Value;
Background.NationalityDescription = result.NationalityDescription;
}
}
});
第二种方法:
var window = _childWindowController.CreateDialog<AddNationalityPopup>();
window.Closed += (sender, args) =>
{
if (args.DialogResult.HasValue && args.DialogResult.Value)
{
var result = (AddNationalityResult)window.Result;
if (result.NationalityCountryId.HasValue)
{
Background.NationalityCountryId = result.NationalityCountryId.Value;
Background.NationalityDescription = result.NationalityDescription;
}
}
};
window.ShowDialog();
在第一种方法中,服务的用户应该知道视图的类型、视图模型和结果才能显示对话框
在第二个界面中简化了一点,但我仍然必须知道在使用之前将结果转换为什么类型。
你有没有遇到过用视图模型显示对话框的问题?
如何改进窗口服务的设计?
你能举一个很好的对话服务实现的例子吗?
【问题讨论】:
标签: c# silverlight design-patterns mvvm