博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转】WPF MultiBinding 和 IMultiValueConverter
阅读量:6906 次
发布时间:2019-06-27

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

WPF MultiBinding 和 IMultiValueConverter

MultiBinding,描述附加到单个绑定目标属性的Binding对象的集合。可以指定多个数值绑定。

IMultiValueConverter通过转换器使用MultiBingding对象,该对象讲根据这些绑定的值转换生成绑定目标的最终值(效果)。

可以看一下微软给出的案例:

1 public class NameConverter : IMultiValueConverter 2 { 3     public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) 4 { 5 string name; 6 7 switch ((string)parameter) 8 { 9 case "FormatLastFirst": 10 name = values[1] + ", " + values[0]; 11 break; 12 case "FormatNormal": 13 default: 14 name = values[0] + " " + values[1]; 15 break; 16 } 17 18 return name; 19 } 20 21 public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) 22 { 23 string[] splitValues = ((string)value).Split(' '); 24 return splitValues; 25 } 26 }

在资源中定义引用转换

1 
1 
2
3
5
6
7
8
9

Orlando Bloom Bloom, Orlando

亦或者 如果股票买卖数据中需要定义 红涨绿跌 ,则会对比昨收价对比实时价格

1 public class QDataColorConvert : IMultiValueConverter 2     { 3         /// 需传入一组对象,(基础值 比对值) 4 public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture) 5 { 6 double proNum = Math.Round((double)values[1], 2);//目前实时阶段性价格 7 double basepronum = Math.Round((double)values[0], 2);//昨收价格 8 9 if (proNum > basepronum) 10 { 11 return new SolidColorBrush(Color.FromArgb(255, 255, 96, 96)); 12 } 13 else if (proNum < basepronum) 14 { 15 return new SolidColorBrush(Color.FromArgb(255, 83, 187, 108)); 16 } 17 return new SolidColorBrush(Color.FromArgb(255, 227, 227, 227)); 18 } 19 20 public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture) 21 { 22 throw new NotImplementedException(); 23 } 24 }

如何使用呢?

1 
2 3
4
5
6
7
8
9
10

Baseprice;Newprice就是数据模型中的实时数据(依赖属性),这样就可以做对比。当然 这里的Binding 与IValueConverter这里就只用到当个数据绑定,单个对应值转换。

这个就是介绍的WPF的MultiBinding 和 IMultiValueConverter的简短文字

希望和大家多多的交流沟通,共同进步。 谢谢!

转载于:https://www.cnblogs.com/chriskwok/p/5125299.html

你可能感兴趣的文章
(转)GMap.Net开发之自定义Marker使用方法
查看>>
P1501 [国家集训队]Tree II
查看>>
用ReactNative搭建一个安卓APP
查看>>
rocketmq生产者代码分析
查看>>
[扫雷][游戏] 交互*2
查看>>
directX学习系列8 颜色融合(转)
查看>>
方法:C#在WinForm中如何将Image存入SQL2000和取出显示
查看>>
码农翻身
查看>>
在windows下运行docker的问题【Error getting IP address: ***】
查看>>
python基础一 day16 匿名函数
查看>>
参考_Android中,如何新建一个界面,并且实现从当前界面切换到到刚才新建的(另外一个)界面...
查看>>
Linux常用命令大全
查看>>
Jenkins卸载方法(Windows/Linux/MacOS)
查看>>
《过节》——北岛
查看>>
并发、并行、同步、异步、多线程的区别?
查看>>
JavaScript的写类方式(5)——转
查看>>
Java并发编程笔记—摘抄—基础知识
查看>>
simple-spring-memcached统一缓存的使用实例
查看>>
Codeforces 600E - Lomsat gelral(树上启发式合并)
查看>>
[Hnoi2013]消毒
查看>>