如何将数据传递到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。