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

dev*_*xer 12 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

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

<local:BlockIdToConditionLabelConverter
    x:Key="_blockIdToConditionLabelConverter" />
Run Code Online (Sandbox Code Playgroud)

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

谢谢.

dec*_*jau 7

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

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

如果没有,您可以在MSDN论坛上查看此帖子.(来自Sam Bent的回答 - MSFT)

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