在经过两次单独的转换后,我需要显示一个整数值,该整数值绑定(bind)到我的数据上下文中的属性:

  • 反转范围内的值(例如,范围为1到100;数据上下文中的值为90;用户看到的值为10)
  • 将数字转换为字符串

  • 我意识到我可以通过创建自己的转换器(实现IValueConverter)来完成这两个步骤。但是,我已经有一个单独的值转换器,它仅执行第一步,而第二步由Int32Converter覆盖。

    有没有一种方法可以在XAML中链接这两个现有类,而不必创建进一步的类来聚合它们?

    如果我需要澄清其中任何一个,请告诉我。 :)

    谢谢。

    最佳答案

    我在Silverlight项目中使用了Gareth Evans的this method

    这是我的实现:

    public class ValueConverterGroup : List<IValueConverter>, IValueConverter
    {
        #region IValueConverter Members
    
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            return this.Aggregate(value, (current, converter) => converter.Convert(current, targetType, parameter, culture));
        }
    
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    
        #endregion
    }
    

    然后可以在XAML中像这样使用它:

    <c:ValueConverterGroup x:Key="InvertAndVisibilitate">
       <c:BooleanInverterConverter/>
       <c:BooleanToVisibilityConverter/>
    </c:ValueConverterGroup>
    

    关于wpf - 有没有办法在XAML中链接多个值转换器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2607490/

    10-12 03:50
    查看更多