Edw*_*uay 2 silverlight wpf xaml mvvm valueconverter
在StackOverflow问题上如何在MVVM模式中使用WPF转换器?我已经知道值转换器不应该在MVVM模式中使用,因为值转换器的功能应该由ViewModel本身处理.
这是有道理的.
但我记得读过你不应该将XAML元素暴露给View,而是只暴露View然后使用DataTemplates绑定和显示的数据集合.
但是,转换器似乎非常强大(例如,它们在MVVM模板演示中使用,在解压缩后看到"Messenger示例"),因为它们可以将对象转换为对象,例如将Message对象转换为FlowDocument对象,或将Customer对象转换为Visibility对象或自定义状态对象到图像等
因此,如果ViewModel将采用Value Converter的功能,它将不得不公开XAML元素和属性,如StackPanel,Visibility,Color,FlowDocument等,对吧?
有谁看到任何理由为什么ViewModel不应该像值转换器那样公开这些丰富的XAML对象?
Mic*_*ter 10
因为这限制了ViewModel仅用于特定的可视化表示.一旦您有ViewModel发出XAML,它就会将设计内容放入开发人员的域中.这意味着使用Expression Blend的设计人员无法编辑设计资产 - 并且设计人员/开发人员的工作流程也会被破坏.将XAML保留在页面上并使用带有数据模板的Value转换器可使设计与代码分离.
当ViewModel公开特定的XAML时,它还限制ViewModel仅在该特定实例中使用,并使其不再可重用.
| 归档时间: |
|
| 查看次数: |
1036 次 |
| 最近记录: |