WPF编程宝典--元素绑定
写在前面
今天讲解的元素绑定算是WPF的特点了吧,很多情况下我们不选择WinForm而是用WPF,就是因为元素绑定给我们带来的方便
简单的绑定表达式
废话不多说,直接上代码
<Slider Name="SliderFontSize" Margin="3" Minimum="1" Maximum="40" Value="10" TickFrequency="1" TickPlacement="TopLeft" />
<TextBlock Margin="10" Text="Simple Text" Name="lblsampleText" FontSize="{Binding ElementName=SliderFontSize, Path=Value}" />
这样最简单的绑定就完成了。
绑定模式
绑定模式分五种,
OneWay
单向,当源属性变化时更新目标属性。
TwoWay
双向,当源属性变化时更新目标属性,当目标属性变化时更新源属性。
OneTime
单次,最初会根据绑定改变属性值,忽略后续的改变。
OneWayToSource
单项,但与OneWay相反。
Default
这个模式比较麻烦,意思就是能做双向绑定的时候就是双向绑定,不能做双向绑定的时候就是单向绑定。
绑定更新模式
更新模式分五种,
PropertyChanged
当目标属性变化时立即更新源。
LostFocus
当目标属性发生变化且目标丢失焦点时更新源。
Explicit
除非调用BindingExpression.UpdateSource()方法,否则无法更新源。
Default
根据目标属性的元数据确定更新行为。我也不知道啥意思,好像是不同的控件更新的条件不同。
用代码创建绑定和检索绑定
//创建绑定
Binding binding = new Binding();
binding.Source = sliderFontSize;
binding.Path = new PropertyPath("Value");
binding.Mode = BindingMode.TwoWay;
lblsampleText.SetBinding(TextBlock.FontSize,binding);
//检索绑定
Binding binding = BindingOperations.GetBinding(lblsampleText,TextBlock.FontSize);
绑定非元素对象
绑定非元素的方法主要就是三种,分别是Source,RelativeSource,DataContext。虽然分三种,但是原理却差不多,都是准备好静态的资源,然后绑定到这些静态的资源上。
写在结尾
最后补充一点关于绑定的知识吧,也是前几天在WPF交流群里看到的,绑定的目标一定都是依赖属性,绑定源的Path一定是CLR属性。