我正在修改一个Silverlight项目,该项目大量使用后面的代码来设置属性等。这是几年前创建的,并且或多或少地从WinForms项目移植过来。
我注意到的问题是,当我为属性设置数据绑定时,在这种情况下为Visibility,如果该属性直接在后面的代码中设置,则删除数据绑定。我甚至在PropertyChanged事件上设置了断点,以验证是否是这种情况。
我做了很多WPF开发,从未注意到这一点。这是正常的,我错过了它或者是不是很正确吗?
答案 0 :(得分:7)
对我来说似乎很正常。
绑定背后的概念是目标属性上的值绑定到源对象上的属性。绑定目标属性时将始终反映源属性的值。只要将自己的值分配给目标属性,目标属性就不再反映源的值,就会破坏两者之间的绑定。因此,设置自己的值将删除绑定。
但是,如果将绑定的Mode
设置为TwoWay
,则Silverlight只会将新值分配给源对象上的属性并保持绑定,因为目标属性仍然反映了该值的值。来源财产。