有人可以解释一个简单的数据绑定行为给我c# Silverlight 4.0

本文关键字:数据绑定 Silverlight 简单 解释 一个 | 更新日期: 2023-09-27 17:53:54

场景如下:

view model中有一个与属性绑定的XAML textbox

行为1 -

如果一个值是直接从代码中分配给属性的。

1) SET在绑定属性上被调用。

2)属性的private字段被更新(可能是value,也可能是其他值,取决于条件)

3) RaisePropertyChange("xx")被调用

4) GET被调用。

5)在视图中更新属性。存储在属性的私有字段中的任何值都将显示在UI中。

行为2 -

如果用户在textbox中输入文本给property赋值:

1)在绑定的property上调用SET

2) properties private字段被更新(可能是value,也可能是其他值,取决于条件)

3) RaisePropertyChange("xx")被调用

就是这样。我的问题是,为什么第4步和第5步不在场景2中发生?RaisePropertyChange正在被调用,所以GET方法不应该很快被调用吗?有人能解释一下为什么不是吗?

有人可以解释一个简单的数据绑定行为给我c# Silverlight 4.0

在场景2中,只有当该属性绑定到不仅仅是文本框时,才会发生GET调用。由于文本框正在更新它的绑定值,因此不需要调用GET,因为没有其他内容被订阅。

BindingMode将处理触发的事件。你的绑定模式是单向的(默认),你期望的是双向行为。把它设为双向。

<TextBlock Text="{Binding MyTextProperty, Mode=TwoWay}" ...

参见Binding Mode Property