在 StackOverflow 问题上,如何在 MVVM 模式中使用 WPF 转换器?我了解到,值转换器不应该在 MVVM 模式中使用,因为值转换器的功能应该由 ViewModel 本身处理。
这是有道理的。
但我记得读过你不应该向 View 公开 XAML 元素,而是只公开 View 然后使用 DataTemplates 绑定和显示的数据集合。
但是,转换器似乎非常强大(例如,它们在MVVM 模板演示中使用,解压后请参阅“Messenger 示例”),因为它们可以将对象转换为对象,例如将消息对象转换为 FlowDocument 对象,或将客户对象转换为 Visibility 对象,或自定义状态对象到图像等。
因此,如果 ViewModel 要承担 Value Converter 的功能,就必须公开 XAML 元素和属性,例如 StackPanel、Visibility、Color、FlowDocument 等,对吗?
有谁知道为什么 ViewModel 不应该像值转换器那样公开这些丰富的 XAML 对象?