如何将数据传递到XAML中的IValueConverter?

我有一个IValueConverter,它的工作是将BlockId转换为ConditionLabel。 问题是我的Model对象具有进行实际转换的智能。 到目前为止我的代码看起来像这样……

public class BlockIdToConditionLabelConverter : IValueConverter { private Model _model; public BlockIdToConditionLabelConverter(Model model) { _model = model; } public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { int blockId = (int)value; return _model.BlockIdToConditionLabel(blockId); } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { return Binding.DoNothing; } } 

目前,我在这样的ResourceDictionary中创建一个静态资源(稍后在DataTemplate中引用它):

  

问题是,我需要一种方法将我的Model对象传递给这个转换器。 我该怎么办?

谢谢。

这是价值转换器的经典问题。

如果您使用的是MVVM模式,则可以通过在模型的ViewModel中实现转换来解决该问题。

如果没有,您可以在MSDN论坛上查看此post 。 (Sam Bent回答 – MSFT)

目标是使用multibinding将模型传递给转换器,在这种情况下,传递DataContext。