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