wpf - 有没有办法在 XAML 中链接多个值转换器?

标签 wpf data-binding xaml ivalueconverter

我遇到了一种情况,在进行两次单独的转换后,我需要显示绑定(bind)到数据上下文上的属性的整数值:

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

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

有没有办法可以在 XAML 中链接这两个现有类,而无需创建另一个聚合它们的类?

如果我需要澄清任何内容,请告诉我。 :)

谢谢。

最佳答案

我用了this method作者:Gareth Evans 在我的 Silverlight 项目中。

这是我的实现:

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/

相关文章:

c# - BitmapCache 导致 WPF 应用程序锁定

.net - 解决方法 BeforeNavigate2 在 WPF .NET 中未触发

java - GWT 的最佳数据绑定(bind)解决方案

c# - 数据绑定(bind)到 WinForm

c# - 如何在 WPF 中捕获从子组件到父组件的激活命令?

wpf - 当 DataGrid 绑定(bind)到 DataTable 时,如何使用 MVVM 在 WPF 中选择 DataGrid 行

wpf - 强制传播值(value)

wpf - 如何根据资源字典中的另一种样式创建样式?

wpf - 隐式样式不适用于自定义控件

c# - WPF:如何使自定义模式对话框闪烁?