WPF(数据更新)

<Window x:Class="WpfApp1.Window1" Title="Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" Width="800" Height="450" 
        WindowStartupLocation="CenterScreen" mc:Ignorable="d">
    <DockPanel>
        <Image Source="img/aislogo.png" />
        <StackPanel Margin="5" Orientation="Vertical">
            <Slider x:Name="slider1" Margin="5" Background="Red" Maximum="100" Minimum="5" Value="8" />
            <TextBox x:Name="tb1" Text="{Binding ElementName=slider1, Path=Value}" Margin="5" Background="Chocolate" FontSize="20" />
            <TextBox x:Name="tb2" Text="{Binding ElementName=tb1, Path=Text}" Margin="5" Background="Chocolate" FontSize="20" />
        </StackPanel>
    </DockPanel>
</Window>

通过上例可以发现:

  1. 改变slider1值会立即更新到tb1和tb2上
  2. 改变tb1值,值有变化就会更新到tb2上,而只有当tb1失去焦点时才更新到slder1上
  3. 改变tb2值时,只有tb2失去焦点时才更新到tb1和slider1上

 为理解这一区别,需要深入分析这两个控件使用的绑定表达式。当使用OneWay或TwoWay绑定时,改变后的值会立即从源传播到目标。然而,反向的变化传递,从目标到源,未必会立即发生。它们的行为由Binding.UpdateSourceTrigger属性控制。

                                                          UpdateSourceTrigger枚举值

名称说明
PropertyChanged当目标属性发生变化时立即更新源
LostFocus当目标属性发生变化并且目标丢失焦点时更新源
Explicit除非调用BindingExpression.UpdateSource()方法,否则无法更新源
Default根据目标属性的元数据确定更新行为(从技术角度看,是根据FrameworkPropertyMetadata.DefaultUpdateSourceTrigger属性决定更新行为)。大多数属性的默认行为是PropertyChanged,但TextBox.Text属性的默认行为是LostFocus

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bridge_go

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值