Binding不止能绑定一个源,它还能绑定多个源,这就是我们这节要讲的多路绑定:MultiBinding。

使用多路绑定跟一般的绑定还是有区别的,首先它并不能很好的在标记扩展中使用,另外,使用多路绑定必须为其指定多路转换器,不指定的话系统不知道怎么处理从这几个源过来的数据,下面通过一个例子来讲解一下:

例子的情景是这样的,登录界面有两个文本框和一个按钮,只有当两个文本框有值的时候按钮才是可用的。

首先定义多路值转换器:

多路转换器需要继承IMultiValueConverter接口,用法跟单值转换器是一样的,就不再细说了。

前台Xaml代码如下:

使用多路绑定,就得写成属性元素的形式,指定多路绑定的Converter,并且将更新设置为属性改变时,这样才能及时更新到button身上。

将这两个的Text绑定到Button的IsEnabled属性上,就能实现上述情景,效果如图:

只有当两个文本框都有值的时候登录按钮才能使用,至于为什么密码框不使用PasswordBox控件,那是因为PasswordBox控件的Password属性不是依赖属性,Binding只能绑定依赖属性,在它身上不起作用。

关于依赖属性,我们下节开讲,Binding相关到此结束...

Binding(五):多路绑定的更多相关文章

  1. WPF多路绑定

    WPF多路绑定 多路绑定实现对数据的计算,XAML:   引用资源所在位置 xmlns:cmlib="clr-namespace:CommonLib;assembly=CommonLib&q ...

  2. 数据绑定(十一)多路绑定MultiBinding

    原文:数据绑定(十一)多路绑定MultiBinding 有时候UI要显示的信息又不止一个数据来源决定,就需要使用MultiBinding,MultiBinding具有一个名为Bindings的属性,其 ...

  3. 控制文本和外观------Attr Binding(attr属性绑定)

    Attr Binding(attr属性绑定) 目的 attr 绑定提供了一种方式可以设置DOM元素的任何属性值.你可以设置img的src属性,连接的href属性.使用绑定,当模型属性改变的时候,它会自 ...

  4. WPF Binding学习(四) 绑定各种数据源

    转自:http://blog.csdn.net/lisenyang/article/details/18312199 1.集合作为数据源 首先我们先创建一个模型类 public class Stude ...

  5. js 五种绑定彻底弄懂this,默认绑定、隐式绑定、显式绑定、new绑定、箭头函数绑定详解

     壹 ❀ 引 可以说this与闭包.原型链一样,属于JavaScript开发中老生常谈的问题了,百度一搜,this相关的文章铺天盖地.可开发好几年,被几道this题安排明明白白的人应该不在少数(我就是 ...

  6. android data binding jetpack IV 绑定一个方法另一种写法和参数传递

    android data binding jetpack VIII BindingConversion android data binding jetpack VII @BindingAdapter ...

  7. JS五种绑定彻底弄懂this,默认绑定、隐式绑定、显式绑定、new绑定、箭头函数绑定详解(转载)

    目录 壹 ❀ 引 贰 ❀ this默认绑定 叁 ❀ this隐式绑定 1.隐式绑定 2.隐式丢失 肆 ❀ this显式绑定 伍 ❀ new绑定 陆 ❀ this绑定优先级 柒 ❀ 箭头函数的this ...

  8. java之多态(Polymorphic)、动态绑定(Dynamic Binding)、迟绑定(Late Binding)

    今天,我们来说说java面向对象最核心的东西,多态.通过多态可以使我们的程序可复用性达到极致,这就是我们为什么要学多态的原因. “多态”(Polymorphic)也叫“动态绑定”(Dynamic Bi ...

  9. 控制文本和外观------CSS Binding(CSS类名绑定)

    <style> .myColor{color:red;font-size:13px} .yourColor{color:green;font-size:34px}</style> ...

随机推荐

  1. 如何在 CentOS 8 中安装 Cockpit Web 控制台

    如何在 CentOS 8 中安装 Cockpit Web 控制台 [日期:2019-10-31] 来源:Linux公社  作者:醉落红尘 [字体:大 中 小]   在本文中,我们将帮助您在CentOS ...

  2. 基于端口划分vlan

    基于端口划分vlan 拓扑图 PC ip 配置 PC 5:192.168.1.5 PC 6:192.168.1.6 PC 7:192.168.1.7 PC 8: 192.168.1.8 交换机配置 创 ...

  3. Scala 中 object、class 与 trait 的区别

    Scala 中 object.class 与 trait 的区别 引言 当你刚入门 Scala,肯定会迫不及待想要编写自己的第一个 Scala 程序.如果你已经在交互模式下敲过 Scala 代码,想必 ...

  4. #undef 与 exit(0) 使用

    #undef  与 #defined 反,实际使用中较多的是当你需要使用自己定义的标准C里面已经的函数时可以这样操作: exit(0)和exit(1)是系统判断函数是否有正常的退出,一般0表示正常的退 ...

  5. 使用mybatis逆向工程Example类,(或者)or条件查询(Day_47)

    使用Example类,or条件查询 SetmealExample setmealExample=new SetmealExample(); setmealExample.or().andNameLik ...

  6. 对标 Spring Boot & Cloud ,轻量框架 Solon 1.4.8 发布

    Solon 是一个轻量的Java基础开发框架.强调,克制 + 简洁 + 开放的原则:力求,更小.更快.更自由的体验.支持:RPC.REST API.MVC.Job.Micro service.WebS ...

  7. logstash收集时filebeat区分日志

    logstash收集时filebeat区分日志     1.场景 filebeat在服务器中同时收集nginx和web项目日志,需要对两个日志在logstash中分别处理 2.版本区别 ==6.x之前 ...

  8. GO语言常用标准库02---os包

    package main import ( "fmt" "os" ) func main() { //获得当前工作路径(当前工程根目录) dir, err := ...

  9. GO语言练习---对切片进行排序

    对整型切片进行选择排序 package main import "fmt" /*对切片排序*/ func SortSlice(slice []int) { for i := 0; ...

  10. RMAN CROSSCHECK命令 说明

    CROSSCHECK命令:     用于核对磁盘和磁带上的备份文件,以确保RMAN资料库与备份文件保持同步.注意:该命令只会检查RMAN资料库所记载的备份文件.当执行crosscheck命令时,如果资 ...