WPF系列教程(二十四):将元素绑定到一起,数据绑定,属性之间的Binding

项目源码

数据绑定

在窗体中放置了一个Slider控件和一个TextBlock控件:

<StackPanel Margin="5" Name="stackPannel"><Slider Name="slider1" TickPlacement="Both" Minimum="1" Maximum="40" TickFrequency="1" Margin="3" Value="10" /><TextBlock Text="This is a test text." Name="textBlock" Margin="10" FontSize="{Binding ElementName=slider1, Path=Value}"/>
StackPanel>

在TextBlock控件中绑定了Slider控件滑块所指的值,利用Binding进行绑定,ElementName是绑定的元素的名称,Path是在元素的多个属性中选择一个我们需要绑定的属性值。
调试程序,在改变滑块位置时,字体变大变小。
在这里插入图片描述
设置一个按钮,点击事件为设置Slider控件值为30:

private void btn1_Click(object sender, RoutedEventArgs e)
{this.slider1.Value = 30;
}

在这里插入图片描述
字体大小也随着源的改变而改变。
当我们修改点击事件,使得点击按钮时,目标属性修改,然而源属性不会随之改变。

private void btn1_Click(object sender, RoutedEventArgs e)
{//this.slider1.Value = 30;this.textBlock.FontSize = 30;
}

在这里插入图片描述
这是一个从源->目标的单向传播过程。
如果我们想把此过程设置为一个双向过程呢?
需要将Binding 对象的Mode属性修改为Mode=TwoWay,这样源属性与目标属性才会双向影响改变。
在这里插入图片描述
除了在XAML中设置绑定外,还可以在代码中设置绑定。
在这里插入图片描述
也可以实现同样的功能。但是大部分情况下都是在XAML文件中创建绑定,只有一些特殊情况,例如动态绑定,根据具体情况进行绑定,删除绑定的情况下才是用代码进行绑定。

取消绑定、删除绑定

使用BindingOperations的ClearAllBindings方法。创建一个取消绑定按钮:

private void btn2_Click(object sender, RoutedEventArgs e)
{BindingOperations.ClearAllBindings(this.textBlock);
}

在这里插入图片描述
按下按钮后滑块textBlock的所有绑定全部消除。
还可以对TextBlock进行多属性的绑定,以下例子绑定Foreground属性:

<TextBlock Text="This is a test text." Name="textBlock" Margin="10" Foreground ="{Binding ElementName=lstBox1, Path=SelectedItem.Tag}"/>
<ListBox Margin="3" Height="auto" Name="lstBox1" ><ListBoxItem Tag="Blue">BlueListBoxItem><ListBoxItem Tag="Pink">PinkListBoxItem><ListBoxItem Tag="SkyBlue">SkyBlueListBoxItem>
ListBox>

在这里插入图片描述

绑定更新

调整滑块大小,则TextBox中的数值跟着发生了变化,然而设置的Mode为TwoWay,当我们直接在TextBox中输入字体大小,却不能立即改变字体大小和滑块位置,只有当光标离开TextBox时才会发生改变。

<TextBox Margin="3" Name="textBox1" Height="30" Width="300" Text="{Binding ElementName=textBlock, Path=FontSize, Mode=TwoWay}"/>

在这里插入图片描述
这是因为虽然是双向的,却不是立刻反应的模式,如果需要达到目标改变,源也立即改变的目的,就需要设置Binding对象的UpdateSourceTrigger属性为UpdateSourceTrigger=PropertyChanged。这样就可以立即发生改变了。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部