【发布时间】:2012-08-20 10:56:09
【问题描述】:
我今天大部分时间都在尝试理解在 WPF/MVVM 中关闭对话框的许多不同方法。大多数答案都集中在简单的对话框上——比如是/否确认对话框。然而,似乎没有人描述一个更复杂的对话案例,它实际上执行一些操作,这些操作必须以事务方式提交:全有或全无。
有一个确定按钮,单击它会调用 ViewModel 上的绑定命令。一切都很好。
现在,如果命令成功,我想关闭窗口,但如果命令失败,我不想关闭它。
经过数小时的研究,我得出的结论是,显然世界上没有人遇到过类似的问题需要解决:|
我发明但尚未实施的解决方案如下:
我会有一个
ConditionalCloseWindow命令,它将窗口作为参数,然后关闭窗口。-
公共静态只读 DependencyProperty 条件 = DependencyProperty.RegisterAttached("Condition", typeof(ICommand), ... snipConditionalCloseWindow命令会有一个附加属性: 执行
ConditionalCloseWindow命令将首先导致Condition命令的执行。只有成功执行Condition命令,ConditionalCloseWindow才会真正执行Close()。
您如何看待这样的解决方案?完全无效吗?或者也许这是一种公认的模式,我没有通过我的研究成功地发现?
【问题讨论】:
标签: wpf mvvm dialog dependency-properties