WPF Binding篇初识2之Path和Source可简写场合

在上一小结中并没有清楚的说明Source与Path的作用。

2.1 path的作用

作为Binding源的对象有很多属性(比如上一小节中的源stu,它的其中一个属性是Name),Path就是来指向源的哪一个属性。如下:

WPF Binding篇初识2之Path和Source可简写场合

Binding还支持多级路径,这个有时候特别好用,比如一个TextBox显示另一个TextBox里面文本的长度,示例如下:

WPF Binding篇初识2之Path和Source可简写场合

集合类型的索引器被称为带参属性,所以这个也是可以绑定的。

WPF Binding篇初识2之Path和Source可简写场合

2.2没有Path的Binding

若Binding源本身就是数据且不需要Path来指明,比如string,int。有时候我们看到代码中Patyh="."或者根本没有Path只有binding就是这种情况,是被省去了。

WPF Binding篇初识2之Path和Source可简写场合

WPF Binding篇初识2之Path和Source可简写场合

CurrentDetectNum本身就是int类型的数据,所以这里省去了写Path

WPF Binding篇初识2之Path和Source可简写场合

2.3为Binding指定源的机中方法

上面已经知道怎么在一个对象上找我们要的数据,这一节我们学习如何给Bingding指定源(Source)源(Source)就是数据的来源,只要一个对象包含数据并且能够通过属性暴露出来,那么它就可以当作Bingding的源来使用。

2.31使用DataContext作为bingding的源

DataContext属性被定义在frameworkElement类里,这个类是WPF控件的基类,所有WPF的控件(包括容器)都有这个属性。WPF的UI布局时树形结构,由此我们可知每个树节点都有DataContext,所以当一个Binding只知道Path的时候,它会向上寻找节点,若节点包含Path指定的这个属性,就认定是当前指定Path的数据源,若到树根部都还没找到,那这个Bingding就没有数据源,也就不会显示数据。

下面此例子没有指定源,但是他会向上寻找DataContext作为源,StackPanel。DataContext里面的Student为源。

WPF Binding篇初识2之Path和Source可简写场合


WPF Binding篇初识2之Path和Source可简写场合

WPF Binding篇初识2之Path和Source可简写场合

前面我们说过Binding本身为数据时,可以将Path省略不写,通过上面的例子,我们可知,源也可由树节点自动寻找,所以Source也可以不写,如下:

WPF Binding篇初识2之Path和Source可简写场合

总结:

Binding一直是有Source(源)和路径(Path)的,只是在一些条件下可以省略不写,意识到这点的基础上,再去看图6-13中的Text={Binding}这行Xaml代码就容易理解了,它首先是Source本身就是数据string类型,所以Path可以省略不写,随后我们又知道Binding是可以自动向UI元素树上节点去寻找含有此属性的DataContext对象,所以Source也可以不写。

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章