从IValueConverter获取对ViewModel的引用

时间:2009-04-20 18:26:01

标签: .net wpf data-binding mvvm ivalueconverter

是否有一种干净的和/或可接受的标准方式从IValueConverter引用ViewModel,还是打破了MVVM模式?基本上,我想基于ViewModel的其他属性在UI中转换绑定数据。我想这是一个问题,因为你如何从IValueConverter返回窗口/页面,因为对控件的引用没有传递给Convert / ConvertBack方法。

2 个答案:

答案 0 :(得分:3)

我建议在ViewModel中添加一个新属性,用于连接或组合ViewModel中的其他属性。这样就无需一起IValueConverter

使用MVVM时,请查看IValueConverters对{{1}}的讨论。

答案 1 :(得分:0)

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

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

获取对引用转换的窗口/页面/视图的引用并不是一个好主意,因为这肯定会破坏MVVM模式。我们的想法是,您的观点和数据是独立的实体,并且设计上应该彼此不了解。

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