假设我有一个绑定到ViewModel A的View,它有一个可观察的集合Customers.
这个MVVM模式的一个优点是我还可以将View绑定到ViewModel B,后者用不同的数据填充它.
但是如果在我的View转换器转换器中显示我的客户,例如我有一个接受合同的"ContractToCustomerConverter"并返回要显示的相应客户.
这个问题是转换器存在于MVVM模式之外,因此不知道我的ViewModel有另一个客户来源.
(我在看到MVVM模板工具包下载附带的WPF演示应用程序中使用转换器后遇到了这些问题,解压后请参阅"Messenger Sample".)
Tho*_*que 12
我通常在MVVM中根本不使用转换器,除了纯UI任务(例如BooleanToVisibilityConverter).恕我直言,您应该在ContractViewModel中声明CustomerViewModel类型的Customer属性,而不是使用ContractToCustomerConverter
转换器应该很少与MVVM一起使用.事实上,我努力不使用它们.VM应该执行视图完成任务所需的所有操作.如果视图需要Customer基于a Contract,则CustomerVM上应该有一个属性,每当Contract更改时由VM逻辑更新.
这个MVVM模式的一个优点是我还可以将View绑定到ViewModel B,后者用不同的数据填充它.
我对这个说法提出异议 根据我的经验,视图不是在不同的VM类型之间共享,也不是MVVM的目标.
对于那些在视图中实际上没有说"非平凡转换器"的人,你如何处理以下内容?
假设我有一个气候传感器模型,它代表给定位置的各种仪器(气压计,湿度计,温度计等)的时间序列读数.
假设我的视图模型从我的模型中公开了一个可观察的传感器集合.
我有一个包含WPF工具包的视图,该工具包DataGrid绑定到视图模型,其ItemsSource属性设置为可观察的传感器集合.如何为给定的传感器表示每种仪器的视图?通过显示小图(认为爱德华托佛特火花这里),其生成通过使用转换器的时间序列变换为图像源(TimeSeriesToSparklineConverter)
以下是我对MVVM的看法:模型将数据暴露给View Models.视图模型将行为,模型数据和状态公开给View.视图可以直观地表示模型数据,并为符合视图模型状态的行为提供界面.
因此,我不相信迷你图像在模型中(模型是数据,而不是它的特定视觉表示).我也不相信迷你图像会出现在视图模型中(如果我的视图想要以不同的方式表示数据,比如显示系列的最小值,最大值,平均值,标准偏差等的网格行?).因此,在我看来,View应该处理将数据转换为所需表示的工作.
因此,如果我想在命令行界面而不是WPF GUI中公开某些视图模型的行为,模型数据和给定状态,我不希望我的模型或我的视图模型包含图像.这是错的吗?我们有一个SensorCollectionGUIViewModel和一个SensorCollectionCommandLineViewModel?这对我来说似乎是错的:我认为视图模型是视图的抽象表示,而不是具体的,并且与这些名称所暗示的特定技术相关联.
这就是我对MVVM不断发展的理解.那么对于那些不使用转换器的人来说,你在这做什么?
| 归档时间: |
|
| 查看次数: |
13288 次 |
| 最近记录: |