.net 从IValueConverter获取对ViewModel的引用

.net 从IValueConverter获取对ViewModel的引用,.net,wpf,data-binding,mvvm,ivalueconverter,.net,Wpf,Data Binding,Mvvm,Ivalueconverter,是否有一种干净和/或公认的标准方式从IValueConverter引用ViewModel,或者这是否打破了MVVM模式?基本上,我希望基于ViewModel的其他属性转换UI中的绑定数据。我猜这与如何从IValueConverter引用回窗口/页面是同一个问题,因为对控件的引用不会传递给Convert/ConvertBack方法。我建议向ViewModel添加一个新属性,将ViewModel中的其他属性连接或组合在一起。这样就不需要同时使用IValueConverter 查看有关使用MVVM时I

是否有一种干净和/或公认的标准方式从IValueConverter引用ViewModel,或者这是否打破了MVVM模式?基本上,我希望基于ViewModel的其他属性转换UI中的绑定数据。我猜这与如何从IValueConverter引用回窗口/页面是同一个问题,因为对控件的引用不会传递给Convert/ConvertBack方法。

我建议向ViewModel添加一个新属性,将ViewModel中的其他属性连接或组合在一起。这样就不需要同时使用
IValueConverter


查看有关使用MVVM时IValueConverters的讨论。

每当我遇到需要在转换器中使用ViewModel中的多个属性的罕见情况时,我只需将整个视图模型作为输入传递,即ala

<Textbox Text="{Binding, Converter={StaticResource WholeObjectConverter}"/>

就获取调用转换的窗口/页面/视图的引用而言,这不是一个好主意,因为这肯定会打破MVVM模式。其思想是,您的视图和数据是独立的实体,设计时不应该相互了解


如果你真的想破解它,你可能会变得聪明,把你想要的引用(ViewModel或View)作为绑定的ConverterParameter部分来传递。

+1转换器在实践MVVM时基本上可以被废除。因此,您将获得更清晰、更易于理解的代码。