博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WPF Binding值转换器ValueConverter使用简介(二)-IMultiValueConverter
阅读量:5958 次
发布时间:2019-06-19

本文共 2283 字,大约阅读时间需要 7 分钟。

注:

需要继承IMultiValueConverter接口,接口使用和IValueConverter逻辑相同。

一、MultiBinding+Converter 多值绑定及多值转换实例

当纵向流量大于横向流量时指示灯应为绿色,当纵向流量小于横向流量时指示灯应为红色,否则指示灯为黄色。

1、定制ColorConverter类,此时Convert中参数是object[] values,values[0]对应MultiBinding中的第一个Binding值,这里是纵向流量值,依此类推,可以在MultiBinding对象中指定多个绑定。

public class ColorConverter : IMultiValueConverter{    //正向修改    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)    {        if (values == null || values.Length < 2)            return DependencyProperty.UnsetValue;        double verValue = (double)values[0];        double horValue = (double)values[1];        if (verValue > horValue)            return new SolidColorBrush(Colors.Green);        else if (verValue < horValue)            return new SolidColorBrush(Colors.Red);        return new SolidColorBrush(Colors.Yellow);    }    //反向修改    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)    {        //返回空,标记不可双向转换        return null;    }}

2.Xaml定义

添加命名空间

xmlns:local="clr-namespace:AudioDemo.View"

二、RGB颜色混合实例

1.转换器定义

public class RGBConverter : IMultiValueConverter{    //正向修改,整合颜色值    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)    {        if (values == null || values.Length < 3)            return null;        byte r = System.Convert.ToByte(values[0]);        byte g = System.Convert.ToByte(values[1]);        byte b = System.Convert.ToByte(values[2]);        Color col = Color.FromRgb(r, g, b);        SolidColorBrush brush = new SolidColorBrush(col);        return brush;    }    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)    {        return null;    }}

2.Xaml定义

别忘先添加命名空间

xmlns:local="clr-namespace:AudioDemo.View"

运行结果:

 更多参考:

转载地址:http://kluax.baihongyu.com/

你可能感兴趣的文章