mor*_*are 22 c# wpf mvvm mvvm-light
我正在尝试创建一个处理弹出窗体的策略,以便在我的应用程序的任何部分使用.到目前为止,我的理解是我需要UserControl在MainWindow的根目录中使用一个.这将绑定到自己的ViewModel,它将处理在应用程序中发送的消息.
我正在使用MVVM Light,而且我对这个Messenger课程还很陌生.
想象一下Master/Details场景,其中一个对象包含在一个列表中ListBox.选择其中一个项目并单击"编辑"按钮将显示UserControl覆盖整个屏幕的项目.然后,用户可以编辑所选项目,然后单击"确定"以提交更改.
我想要UserControl打开它是"通用的",我可以抛出任何(可能是一个ViewModel)...它通过a渲染ViewModel DataTemplate并处理所有对象的更改.单击"确定"将回调到发送类并像以前一样保留更改.
一些有用的情况是......
任何人都可以提供我如何实现这一点的代码示例吗?
Axe*_*ger 21
在使用MVVM设计UI时,目标是将View的关注点与ViewModel的关注点分开.理想情况下,ViewModel不应该依赖任何视图组件.但是,这是idal和MVVM的另一个规则是你应该按照自己的意愿设计你的应用程序.
在提供显示对话框的服务的区域中,有两种不同的方法浮动:
这两种方法都依赖于定义服务提供的功能的接口.然后将此服务的实现注入ViewModel.
而且,这两种方法都有其特定的优点和缺点.
另一种可能的解决方案是使用消息传递来显示对话框.
无论您使用何种方法,都尝试通过使用IoC(控制反转)模式来保持View和ViewModel解耦,即定义接口以便您可以使用不同的实现.要将服务绑定到ViewModel,请使用注入,即将服务传递到ViewModel的构造函数或通过设置属性.
我最近开始学习MVVM用于我正在创建的WPF应用程序,我使用这篇文章作为显示对话框的基础,如果你下载示例项目,那么它实际上是一个非常好的解耦方法,它很好地抽象,并获得一个视图你传递一个viewmodel的实例.我为自己的方式扩展了一些,我还使用了WPFExtendedToolkit MessageBox来发出警告,错误等,因为标准的win32 MessageBox很难看.
至于动力形式,那么你就需要调查的ItemsControl,并在您的ViewModels有需要由用户为ItemsControl的结合被编辑的数据项的集合.我有一个对话框,用于在工作流系统设计器中编辑操作及其参数,其中操作的对话列表是完全动态的.这是通过使用数据类型公开我的项目集合来完成的,因此我可以使用DataTemplateSelector选择包含正确类型控件的DataTemplates,即DateTime的数据类型显示DatePicker.
希望有所帮助