深入浅出wpf之Binding学习总结
作者:互联网
Data Binding本身就是双向通信。Binding源是逻辑层的对象【有很多数据,通过属性暴露给外界】,Binding目标是UI层的控件对象。
1. 把控件作为Binding源于Binding标记扩展
<TextBox x:Name="textBox1" Text="{Binding Path=value,Element=slider1}"/>
<Slider x:Name="slider1"/>
2.没有Path的Binding
这是一种比较特殊的情况–Binding源本身就是数据且不需要Path来指明,典型的如string,int等基本类型就是这样。
<StackPanel>
<StackPanel.Resources>
<sys:String x:key="myString">
11111111111111
<sys:String>
</StackPanel.Resources>
</StackPanel>
3.为Binding指定源(Source)的几种方法
Binding的源是数据的来源,所以,只要一个对象包含数据并且通过属性吧数据暴露出来,它就能当作Binding的源来使用。
- 如果类型实现了INotifyPropertyChanged接口,则可通过在属性的set语句里激发PropertyChaned事件来通知Binding数据已被更新。
- 把容器的DataContext指定为Source,在建立Binding时只给他设置Path而不这是Source,Binding会自动把控件的DataContext当作自己的Source(它会沿着控件树一层一层的向外寻找,直到找到带有Path指定的属性为止)。
- 通过ElementName指定Source
4.没有Source的Binding-------使用DataContext作为Binding的源
基础:UI树的每个节点都具有DataContext。
<StackPanel>
<StackPanel.DataContext>
<sys:String>hhhhhh</sys:String>
</StackPanel.DataContext>
<Grid>
<TextBlock Text="{Binding}" Margin="5"/>
<TextBlock Text="{Binding}" Margin="5"/>
<TextBlock Text="{Binding}" Margin="5"/>
</Grid>
</StackPanel>
Binding自动向UI元素的上层寻找DataContext对象并把它作为Source的原因?
DataContext是一个依赖属性,依赖属性的特点就是当你没有为控件的某个依赖属性显示赋值时,控件会把自己容器的属性值借过来当作自己的属性值。实际上是属性值沿着UI元素树向下传递了。
标签:控件,DataContext,深入浅出,Binding,Source,Path,wpf,属性 来源: https://blog.csdn.net/weixin_42974146/article/details/117931616