我有点卡在这个上面了。清除不属于 DataTemplate
的某些 TextBox
的 TextProperty
的绑定(bind)工作正常。但是当 TextBox
是 DataTemplate
的一部分时,清除绑定(bind)似乎是一个无操作,如下面的片段所示。监视值是 true
,即使绑定(bind)可能已被清除:
这是设计使然吗?如果不是,我做错了什么?
这是 ClearBinding(...)
的 MSDN 文档:http://msdn.microsoft.com/en-us/library/system.windows.data.bindingoperations.clearbinding
最佳答案
我找到了这个 MSDN post这涵盖了这个问题。虽然它似乎没有真正解释这个问题,但它确实提供了一个似乎工作正常的解决方法。
我用一些虚拟值替换绑定(bind)来替换 ClearBinding 调用:
AssociatedObject.SetBinding(TextBox.TextProperty, "dummy");
现在看来,当控件不是来自 DataTemplate
时,这似乎会中断。因此,为了解决这个问题,并覆盖 DataTemplate
中的 TextBox
es,否则,我现在这样做:
BindingOperations.ClearBinding(AssociatedObject, TextBox.TextProperty);
if (BindingOperations.IsDataBound(AssociatedObject, TextBox.TextProperty))
AssociatedObject.SetBinding(TextBox.TextProperty, "dummy");
瞧,绑定(bind)被“切断”了,所以我的水印现在似乎可以正常工作了。
关于c# - 当控件来自 DataTemplate 时,BindingOperations.ClearBinding(...) 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11669282/