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