WPF MultiBinding 和 IMultiValueConverter

时间 2015-02-02 19:43:00  博客园精华区
主题 WPF

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的更多相关文章

  1. WPF MultiBinding 和 IMultiValueConverter

    MultiBinding,描述附加到单个绑定目标属性的Binding对象的集合.可以指定多个数值绑定. IMultiValueConverter通过转换器使用MultiBingding对象,该对象讲根 ...

  2. WPF多值绑定及多值转换(MultiBinding和IMultiValueConverter)

    WPF可以使用MultiBinding进行多值绑定,使用IMultiValueConverter进行多值转换 例: (1)转换器 public class ContentConverter : IMu ...

  3. WPF MultiBinding,多值转化器IMultiValueConverter,自制调色板 palette

    public class RGBConverter : IMultiValueConverter { //正向修改,整合颜色值 public object Convert(object[] value ...

  4. WPF MultiBinding后台绑定动态属性 属性改变不调用Convert的问题

    一开始的写法: MultiBinding mb = new MultiBinding(); Binding b1 = new Binding(); b1.ElementName = "tex ...

  5. wpf一些例子

    相关知识点:WPF - Adorner WPF Diagram Designer http://www.codeproject.com/Articles/484616/MVVM-Diagram-Des ...

  6. (WPF) 基本题

    What is WPF? WPF (Windows Presentation foundation) is a graphical subsystem for displaying user inte ...

  7. 准备.Net转前端开发-WPF界面框架那些事,值得珍藏的8个问题

    题外话 不出意外,本片内容应该是最后一篇关于.Net技术的博客,做.Net的伙伴们忽喷忽喷..Net挺好的,微软最近在跨平台方面搞的水深火热,更新也比较频繁,而且博客园的很多大牛也写的有跨平台相关技术 ...

  8. WPF 简易手风琴 (ListBox+Expander)

    概述 之前听说很多大神的成长之路,几乎都有个习惯--写博文,可以有效的对项目进行总结.从而提高开发的经验.所以初学WPF的我想试试,顺便提高一下小学作文的能力.O(∩_∩)O哈哈~ 读万卷书不如行万里 ...

  9. WPF绑定功能常用属性介绍

    1.Mode 绑定中数据流的方向(enum BindingMode) 目标属性指的是控件的属性 (1)TwoWay 更改源属性或目标属性时,会自动更新另一方.适用于可编辑窗体 例:TextBox (2 ...

随机推荐

  1. hdu 4111 Alice and Bob(中档博弈题)

    copy VS study 1.每堆部是1的时候,是3的倍数时输否则赢: 2.只有一堆2其他全是1的时候,1的堆数是3的倍数时输否则赢: 3.其他情况下,计算出总和+堆数-1,若为偶数,且1的堆数是偶 ...

  2. Qt中的多线程技术(列表总结比较,多线程创建和销毁其实是有开销的,只是增加了用户体验而已)

    http://blog.csdn.net/u011012932/article/details/52943811

  3. rc.local自启动学习(转)

    linux有自己一套完整的启动体系,抓住了linux启动的脉络,linux的启动过程将不再神秘. 本文中假设inittab中设置的init tree为: /etc/rc.d/rc0.d/etc/rc. ...

  4. git checkout not discard changes

    1. checkout one branch, show status user@vbox:/mnt/tmp$ git checkout masterSwitched to branch 'maste ...

  5. dojo 三 类和继承 dojo/_base/declare

    这里要讲有关类的定义.继承和实现.官方教程:http://dojotoolkit.org/documentation/tutorials/1.7/declare/类的声明是通过declare 这个方法 ...

  6. Android开发实例详解之IMF(Android SDK Sample—SoftKeyboard)

    本博前面的文章介绍了Android开发环境的搭建和模拟器的常用操作.本次,将以Android Sample中经典的SoftKeyboard项目为例,详细解析Android上一个小型项目的开发过程和注意 ...

  7. Android启动过程以及各个镜像的关系

    Android启动过程 Android在启动的时候,会由UBOOT传入一个init参数,这个init参数指定了开机的时候第一个运行的程序,默认就是init程序,这个程序在ramdisk.img中.可以 ...

  8. java操作office和pdf文件页面列表导出cvs,excel、pdf报表.

    在平常的开发中我们常常遇到不仅仅只是导出excel报表的情况.有时候也需要导出pdf或者CSV报 表.其实原理都差不多.刚开始本来不打算也这篇博客介绍这个的.感觉这篇博客和前面的博客有点雷同.原理基本 ...

  9. [POJ3061]Subsequence(二分,前缀和)

    题目链接:http://poj.org/problem?id=3061 题意:给一个长为n的数列和整数s,求一个连续的子序列,使得这个子序列长度最短并且不小于这个整数s. 统计[1~i]的子序列和su ...

  10. Linux同步机制(二) - 条件变量,信号量,文件锁,栅栏

    1 条件变量 条件变量是一种同步机制,允许线程挂起,直到共享数据上的某些条件得到满足. 1.1 相关函数 #include <pthread.h>  pthread_cond_t cond ...