当前位置:  开发笔记 > 后端 > 正文

MV-VM - 在ViewModel中使用命令的任何示例?

如何解决《MV-VM-在ViewModel中使用命令的任何示例?》经验,为你挑选了0个好方法。

我一直在使用我的MV-VM开发一个非常大的LOB应用程序,我称之为MV-MC(Model-View-ModelController),它是MVC和MV-VM之间的一种组合.我已经发布了这个答案,关于如何在MV-VM中实例化视图,问题是" 什么是最常见的错误 - 在wpf开发中制造 ".

Sam就我的回答发表了以下评论:

这会产生一个后续问题:如何创建视图?我使用RelayCommands将视图中的操作绑定到ViewModel,因此视图甚至不知道某个操作已被触发,也不知道他应该打开一个新视图.解决方案:在VM中创建一个事件以供View订阅?

当我最初开始MV-VM开发时,我认为一切都应该存在于ViewModel中,并且已经研究了很多像Josh Smith和Karl Shifflett这样的人的例子.但是,我还没有提出一个很好的例子,说明命令何时需要存在于ViewModel中.

例如,假设我有一个显示客户的ListView,以及我点击的按钮,允许我编辑当前选定的客户.ListView(View)绑定到CustomerVM(ViewModel).单击该按钮将触发EditCustomerCommand,这将打开一个弹出窗口,允许我编辑CustomerVM的所有属性.这个EditCustomerCommand在哪里?如果它涉及打开一个窗口(UI功能),它不应该在视图的代码隐藏中定义吗? 替代文字

有没有人有任何关于何时应该在View和ViewModel中定义命令的例子?

Matthew Wright在下面说:

从列表中删除和删除将是很好的例子.在这些情况下,会添加空白记录或ViewModel删除当前记录.视图采取的任何操作都应该响应发生的事件.

所以,如果我点击新按钮,会发生什么?Customer ViewModel创建了一个CustomerVM的新实例并添加到它的集合中吗?那么我的编辑屏幕怎么会打开呢?该视图应该创建Customer ViewModel的新实例,并将其传递给ParentVM.Add(newlyCreatedVM)方法吗?

假设我通过VM上的DeleteCommand删除客户记录.VM调用业务层并尝试删除记录.它不能这样它会向VM返回一条消息.我想在对话框中显示此消息.视图如何从命令操作中获取消息?

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有