WPF:数据绑定--DirectionalBinding绑定方向

DirectionalBinding绑定方向

实现效果:

  1. 见图示说明
  2. 点击更新租金后获取绑定数据进行属性更新
  3. 更改其中一项值进行租金重新结算

clipboard.png
clipboard.png
实践:

  1. Binding.Mode 属性使用
  2. NotifyOnTargetUpdated引发 TargetUpdated 事件

代码:
数据上下文的绑定源

<Grid.DataContext>
    <Binding Source="{StaticResource IncomeDataSource}"/>
</Grid.DataContext>

绑定目标通知更新NotifyOnTargetUpdated

<TextBlock Grid.Row="1" Grid.Column="1" Name="RentText"
    Text="{Binding Path=Rent, Mode=OneWay, NotifyOnTargetUpdated=True}"
    TargetUpdated="OnTargetUpdated"/>

获取绑定数据类型引用并进行属性重新设置

private void OnRentRaise(object sender, RoutedEventArgs args)
{
    // Update bills
    var random = new Random();
    double i = random.Next(10);
    var bindingExpression =
        BindingOperations.GetBindingExpression(SavingsText, TextBlock.TextProperty);
    var sourceData = (NetIncome) bindingExpression.DataItem;
    sourceData.Rent = (int) ((1 + i/100)*sourceData.Rent);
}

绑定目标更新方法:

private void OnTargetUpdated(object sender, DataTransferEventArgs args)
{
    // Handle event
    var fe = sender as FrameworkElement;
    infoText.Text = "";
    infoText.Text += args.Property.Name + " property of a " + args.Property.OwnerType.Name;
    infoText.Text += " element (";
    infoText.Text += fe.Name;
    infoText.Text += ") updated...";
    infoText.Text += DateTime.Now.ToLongDateString();
    infoText.Text += " at ";
    infoText.Text += DateTime.Now.ToLongTimeString();
}

扩展:

  1. 当值从绑定源传输到绑定目标时发生 TargetUpdated 事件,但只针对 NotifyOnTargetUpdated 值设置为 true 的绑定。
  2. 当值从目标传输到源时发生 SourceUpdated 事件,但只针对 NotifyOnSourceUpdated 值设置为 true 的绑定。
  3. DataTransferEventArgs 类:封装数据传输事件的参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值