我正在修改一个 Silverlight 项目,该项目大量使用隐藏代码来设置属性等。这是几年前创建的,或多或少是从 WinForms 项目移植过来的。
我注意到的问题是,当我为属性设置数据绑定(bind)时,在本例中为可见性,如果该属性直接在后面的代码中设置,则数据绑定(bind)将被删除。我什至在 PropertyChanged 事件上设置断点来验证情况是否如此。
我已经做了很多 WPF 开发,但从未注意到这一点。这是正常的,我错过了还是不太对劲?
最佳答案
我觉得很正常。
绑定(bind)背后的概念是目标属性的值绑定(bind)到源对象的属性。绑定(bind)时,目标属性将始终反射(reflect)源属性的值。一旦您将自己的值分配给目标属性,目标属性就不再反射(reflect)来自源的值,您就破坏了两者之间的绑定(bind)。因此,设置您自己的值会删除绑定(bind)。
但是,如果您将绑定(bind)的 Mode
设置为 TwoWay
,则 Silverlight 只需将新值分配给源对象上的属性,并自目标属性以来保持绑定(bind)仍然反射(reflect)源属性的值。
关于Silverlight:设置属性直接删除数据绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5918314/