如何通知View有关Command的成功

时间:2012-09-03 17:37:15

标签: c# wpf mvvm

我正在按照MVVM模式开发一个小型数据库应用程序。为了修改数据库,我使用对话框(视图),然后调用在视图的视图模型中定义的命令。但是,如何判断该命令的成功/结果?

一个简单的例子:用户想要删除一行,但仍然存在剩余关系,因此无法删除该行。在我看来和对MVVM的理解中,观察到失败以及观察工作的观点的工作是告知用户该问题。我认为在操作失败后直接从视图模型创建这个特殊视图是错误的。我想到了解决这个问题的事件(比如我用于视图模型通信的中介模式)。但是这些事件也应该允许传递参数。在这个例子中,paremter应该是一个包含所有剩余关系的字符串,这样用户也可以理解操作失败的原因。

有人建议解决这个问题吗?我非常感谢你的帮助!

2 个答案:

答案 0 :(得分:0)

在您的情况下,该行应该在绑定的集合中。视图应该只是向viewmodel发送一个命令“删除这一行”,它的兴趣应该停在那里。 viewmodel应负责实际删除行并将其从集合中删除。

答案 1 :(得分:0)

选项1.在视图模型类中使用错误集合(ObservableCollection)。将视图中的任何项目控件绑定到此集合。当命令出现故障时,请向错误集合添加错误。

选项2.当命令出现故障时,向用户显示一个包含错误消息的消息框。要关注MVVM,请通过服务显示它或将消息发布到任何类似中介的类型。

两个选项(在集合中添加新错误或消息框)必须在视图模型中实现,而不是在视图中实现。