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

时间:2009-07-12 16:13:01

标签: c# wpf xaml

我有一个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中引用它):

<local:BlockIdToConditionLabelConverter
    x:Key="_blockIdToConditionLabelConverter" />

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

感谢。

1 个答案:

答案 0 :(得分:7)

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

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

如果没有,您可以查看this post on MSDN forums。 (Sam Bent回答 - MSFT)

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