【发布时间】:2009-06-17 14:42:54
【问题描述】:
假设我有一个绑定到 ViewModel A 的视图,它有一个可观察的集合 Customers。
这种 MVVM 模式的一个优点是我还可以将视图绑定到 ViewModel B,它会用不同的数据填充它。
但是如果在我的 View converter Converters 中显示我的客户,例如我有一个“ContractToCustomerConverter”,它接受合同并返回要显示的适当客户。
问题在于转换器存在于 MVVM 模式之外,因此不知道我的 ViewModel 有另一个客户来源。
- View 有没有办法将 ViewModel 传递给 Converter,以便它参与 MVVM 模式提供的解耦?
- 有没有办法让我以某种方式在我的 ViewModel 中包含转换器,以便转换器使用 ViewModel 可用的当前依赖项?
- 或者是转换器只是美化了代码隐藏,因此没有在 MVVM 模式中使用,所以如果您使用 MVVM,那么您只需创建自己的“转换器”(ViewModel 类上的方法)返回要在视图上使用的 Image 对象、Visibility 对象、FlowDocuments 等内容,而不是使用转换器?
(我在看到 MVVM Template Toolkit download 附带的 WPF 演示应用程序中使用转换器后遇到这些问题,解压后请参阅“Messenger 示例”。)
【问题讨论】: