【转】WPF MultiBinding 和 IMultiValueConverter
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 <c:NameConverter x:Key="myNameConverter"/>
1 <TextBlock Name="textBox2" DataContext="{StaticResource NameListData}">
2 <TextBlock.Text>
3 <MultiBinding Converter="{StaticResource myNameConverter}"
4 ConverterParameter="FormatLastFirst">
5 <Binding Path="FirstName"/>
6 <Binding Path="LastName"/>
7 </MultiBinding>
8 </TextBlock.Text>
9 </TextBlock>
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 <C:QDataColorConvert x:Key="Qdataconverter"/>
2
3 <TextBlock Text="{Binding Path=Newprice}">
4 <TextBlock.Foreground>
5 <MultiBinding Converter="{StaticResource Qdataconverter}">
6 <Binding Path="Baseprice"/>
7 <Binding Path="Newprice"/>
8 </MultiBinding>
9 </TextBlock.Foreground>
10</TextBlock>

Baseprice;Newprice就是数据模型中的实时数据(依赖属性),这样就可以做对比。 当然 这里的Binding 与IValueConverter这里就只用到当个数据绑定,单个对应值转换。
这个就是介绍的WPF的MultiBinding 和 IMultiValueConverter的简短文字
希望和大家多多的交流沟通,共同进步。 谢谢!
【转】WPF MultiBinding 和 IMultiValueConverter的更多相关文章
- WPF MultiBinding 和 IMultiValueConverter
MultiBinding,描述附加到单个绑定目标属性的Binding对象的集合.可以指定多个数值绑定. IMultiValueConverter通过转换器使用MultiBingding对象,该对象讲根 ...
- WPF多值绑定及多值转换(MultiBinding和IMultiValueConverter)
WPF可以使用MultiBinding进行多值绑定,使用IMultiValueConverter进行多值转换 例: (1)转换器 public class ContentConverter : IMu ...
- WPF MultiBinding,多值转化器IMultiValueConverter,自制调色板 palette
public class RGBConverter : IMultiValueConverter { //正向修改,整合颜色值 public object Convert(object[] value ...
- WPF MultiBinding后台绑定动态属性 属性改变不调用Convert的问题
一开始的写法: MultiBinding mb = new MultiBinding(); Binding b1 = new Binding(); b1.ElementName = "tex ...
- wpf一些例子
相关知识点:WPF - Adorner WPF Diagram Designer http://www.codeproject.com/Articles/484616/MVVM-Diagram-Des ...
- (WPF) 基本题
What is WPF? WPF (Windows Presentation foundation) is a graphical subsystem for displaying user inte ...
- 准备.Net转前端开发-WPF界面框架那些事,值得珍藏的8个问题
题外话 不出意外,本片内容应该是最后一篇关于.Net技术的博客,做.Net的伙伴们忽喷忽喷..Net挺好的,微软最近在跨平台方面搞的水深火热,更新也比较频繁,而且博客园的很多大牛也写的有跨平台相关技术 ...
- WPF 简易手风琴 (ListBox+Expander)
概述 之前听说很多大神的成长之路,几乎都有个习惯--写博文,可以有效的对项目进行总结.从而提高开发的经验.所以初学WPF的我想试试,顺便提高一下小学作文的能力.O(∩_∩)O哈哈~ 读万卷书不如行万里 ...
- WPF绑定功能常用属性介绍
1.Mode 绑定中数据流的方向(enum BindingMode) 目标属性指的是控件的属性 (1)TwoWay 更改源属性或目标属性时,会自动更新另一方.适用于可编辑窗体 例:TextBox (2 ...
随机推荐
- Solution中的auto test case组织方式
在一个solution中所有的auto test case都需要写在一个类中,即*.cs文件中.实现某一个case 我们可以写一个方法.一个方法实现一个test case.这个方法前面要用[TestM ...
- javaScript解决Form的嵌套
HTML是不允许FORM嵌套的,用一个简单的JAVASCRIPT就可以解决问题了 <script language=javascript> function process(v){ if( ...
- 【原创】【ViewFlow+GridView】Parameter must be a descendant of this view问题分析
关于ViewFlow和GridView嵌套导致Parameter must be a descendant of this view问题的解决方案 [关于ViewFlow] ViewFlow是一款 ...
- MongoDB小记
mongodb的一个简单使用. package com.chuntent.mongo; import java.util.Map; import java.util.Map.Entry; import ...
- USACO Section 4.2: Drainage Ditches
最大流的模板题 /* ID: yingzho1 LANG: C++ TASK: ditch */ #include <iostream> #include <fstream> ...
- js dom
JavaScript的DOM操作 1.DOM的基本概念 DOM是文档对象模型,这种模型为树模型:文档是指标签文档:对象是指文档中每个元素:模型是指抽象化的东西. 2.Window对象操作 一.属性和方 ...
- CenOS7.1 vncserver@:1.service: control process exited, code=exited status=2
参考:http://www.cnblogs.com/gaohong/p/4829206.html 报错细节: vncserver@:1.service: control process exited, ...
- [分享] VIM 常用命令及游戏练级
分享一个不错的文章,讲解了 VIM 的常用命令. http://coolshell.cn/articles/5426.html 另,介绍一个可以帮助熟悉VIM命令的练级游戏. 游戏地址:http:// ...
- [原]携程预选赛A题-聪明的猴子-GCD+DP
题目: 聪明的猴子 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- AI中去掉页面边框
其实也没啥说的,就是很多人在百度中问这个在AI中这样除去页面边框,其实很简单,用快捷组合键 ctrl+shift+H 就行啦,边框自己就没了