繁体   English   中英

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

[英]How do you pass data into an IValueConverter in 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对象传递给这个转换器。 我该怎么办?

谢谢。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM