多路Binding(MultiBinding)
来源:互联网 发布:c语言输出unicode字符 编辑:程序博客网 时间:2024/06/06 09:46
UI需要显示的信息由不止一个数据来源决定时,就使用MultiBinding,即多路Binding。
Bindings属性其类型是Collection,通过这个属性MultiBinding把一组Binding对象聚合起来。
处在这个集合中的Binding对象可以拥有自己的数据校验与转换机制。
例:
UI上包含两个TextBox用于输入用户名,要求内容一致。
当TextBox的内容符合要求时,Button可用。
UI上XMAL代码
<Window x:Class="Windows6.WPFWindow6_5" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="WPFWindow6_5" Height="185" Width="300"> <StackPanel Background="LightBlue"> <TextBox x:Name="txtBox1" Height="23" Margin="5"/> <TextBox x:Name="txtBox2" Height="23" Margin="5,0"/> <TextBox x:Name="txtBox3" Height="23" Margin="5"/> <TextBox x:Name="txtBox4" Height="23" Margin="5,0"/> <Button x:Name="btn" Content="Submit" Width="80" Margin="5"/> </StackPanel></Window>
用于设置MultiBinding的代码写在名为SetMultiBinding()方法里,并在窗体的构造器中调用:
private void SetMultiBinding(){ //准备基础Binding Binding b1 = new Binding("Text") { Source = this.txtBox1 }; Binding b2 = new Binding("Text") { Source = this.txtBox2 }; Binding b3 = new Binding("Text") { Source = this.txtBox3 }; Binding b4 = new Binding("Text") { Source = this.txtBox4 }; //准备MultiBinding MultiBinding mb = new MultiBinding() { Mode = BindingMode.OneWay }; mb.Bindings.Add(b1); //注意:MultiBinding对Add子Binding的顺序是敏感的 mb.Bindings.Add(b2); mb.Bindings.Add(b3); mb.Bindings.Add(b4); mb.Converter = new LogonMultiBindingConverter(); //将Button与MultiBinding对象关联 this.btn.SetBinding(Button.IsEnabledProperty, mb);}
注意:
1、MultiBinding对于添加子级Binding的顺序是敏感的,因为这个顺序觉得了汇集到Converter里的顺序。
2、MultiBinding的Converter实现的是IMultiValueConverter接口。
Converter部分代码:
public class LogonMultiBindingConverter : IMultiValueConverter{ public object Convert(object[] values, System.Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (!values.Cast<string>().Any(text => string.IsNullOrEmpty(text)) && values[0].ToString() == values[1].ToString() && values[2].ToString() == values[3].ToString()) { return true; } return false; } public object[] ConvertBack(object value, System.Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture) { throw new System.NotImplementedException(); }}
0 0
- 多路Binding(MultiBinding)
- Binding之MultiBinding
- WPF应用Binding之MultiBinding
- WPF之Binding基础十一 MultiBinding多路绑定
- wpf中的 绑定Binding MultiBinding StringFormat格式转化问题
- MultiBinding XamDataGrid
- WPF中的binding(十二)- 多路Binding
- Silverlight/WP7 MultiBinding
- Silverlight/WP7 MultiBinding
- WPF中的MultiBinding
- Binding
- binding
- Binding
- Binding
- windows phone:Silverlight/WP7 MultiBinding
- WPF(MultiBinding 数据对比验证,启用提交)
- WPF Get Multibinding Expression, Update Source,
- WPF MultiBinding 实现控件 Tooltip 多绑定
- Android开发过程中内存泄露检测及工具
- Top 10 Java Serialization Interview Questions and Answers
- SQL LEFT JOIN 关键字 高级教程
- Scala-包、类、对象、成员、伴生类、伴生对象 访问权限
- Java中数据类型的大小与范围
- 多路Binding(MultiBinding)
- iOS多线程编程技术之NSThread、Cocoa NSOperation、GCD
- 死锁
- 工业CAN 总线转换器“ISO9001认证”
- Java线程池架构原理和源码解析(ThreadPoolExecutor)
- ios 9.0以上本版 问题总结
- android使用gradle打包带签名的apk包
- java处理html转义符号
- error LNK2019: 无法解析的外部符号 __imp__CryptCreateHash@20,该符号在函数 _MD5_Init 中被引用