有人可以解释一个简单的数据绑定行为给我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
方法不应该很快被调用吗?有人能解释一下为什么不是吗?
在场景2中,只有当该属性绑定到不仅仅是文本框时,才会发生GET调用。由于文本框正在更新它的绑定值,因此不需要调用GET,因为没有其他内容被订阅。
BindingMode将处理触发的事件。你的绑定模式是单向的(默认),你期望的是双向行为。把它设为双向。
<TextBlock Text="{Binding MyTextProperty, Mode=TwoWay}" ...
参见Binding Mode Property