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. centos使用fuse挂载NTFS

    FUSE:用户空间文件系统(Filesystem in Userspace),是Linux 中用于挂载某些网络空间,如SSH,到本地文件系统的模块.如果装的是双系统,centOS并不支持ntfs分区, ...

  2. angularjs transclude demo

    <!doctype html> <html lang="en" ng-app="expanderModule"> <head> ...

  3. Android控件系列之CheckBox

    学习目的: 1.掌握在Android中如何建立CheckBox 2.掌握CheckBox的常用属性 3.掌握CheckBox选中状态变换的事件(监听器) CheckBox简介: CheckBox和Bu ...

  4. 【分享】Maven插件的源码下载(SVN)

    偶然的情况下找到了Maven插件源码的网址,现分享下 http://svn.apache.org/repos/asf/maven/plugins/ 可以使用SVN下载,在添加新的资源路径时,把上面的网 ...

  5. poj - 1258 Agri-Net (最小生成树)

    http://poj.org/problem?id=1258 FJ为了竞选市长,承诺为这个地区的所有农场联网,为了减少花费,希望所需光纤越少越好,给定每两个农场的花费,求出最小花费. 最小生成树. # ...

  6. MTK Android 编译命令

    一.Target 编译命令 usage: (makeMtk|mk) [options] project actions [moudles] options:       -t,-tcc         ...

  7. Hadoop集群(第3期)_VSFTP安装配置

    1.VSFTP简介 VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP 从此名称可以看出来,编制者的初衷是代码的安全. 安全性是编写VSF ...

  8. Linux Kernel CMPXCHG函数分析

    原文地址:http://blog.csdn.net/penngrove/article/details/44175387 最近看到Linux Kernel cmpxchg的代码,对实现很不理解.上网查 ...

  9. Python3 学习第六弹: 迭代器与生成器

    1> 迭代器 迭代的意思类似递归一般,不断地对一个对象做重复的操作.来看个例子: class Fibs: def __init__(self): self.last = self.now = 1 ...

  10. QQ互发消息

    private NewsData data; private void button3_Click(object sender, EventArgs e) //发送 { string x = text ...