4

我有点坚持这个。清除TextProperty一些TextBox不属于 a的绑定DataTemplate可以正常工作。但是当TextBox是 a 的一部分时DataTemplate,清除绑定似乎是一个空操作,如下面的片段所示。监视值true甚至在绑定可能被清除之后:

在此处输入图像描述

这是设计使然吗?如果没有,我做错了什么?

这是 MSDN 文档:http ClearBinding(...): //msdn.microsoft.com/en-us/library/system.windows.data.bindingoperations.clearbinding

4

2 回答 2

4

我发现这篇MSDN 帖子涵盖了这个问题。虽然它似乎没有真正解释这个问题,但它确实提供了一种似乎工作得很好的解决方法。

我用一些虚拟值替换绑定来替换 ClearBinding 调用:

AssociatedObject.SetBinding(TextBox.TextProperty, "dummy");

现在看来,当控件不是来自DataTemplate. 因此,为了解决这个问题,并涵盖TextBoxes fromDataTemplate和其他方面,我现在这样做:

BindingOperations.ClearBinding(AssociatedObject, TextBox.TextProperty);
if (BindingOperations.IsDataBound(AssociatedObject, TextBox.TextProperty))
    AssociatedObject.SetBinding(TextBox.TextProperty, "dummy");

瞧,绑定被“切断”了,所以我的水印现在似乎工作得很好。

于 2012-07-26T17:02:52.117 回答
1

不确定这是否可行(没有尝试),但请尝试使用MSDNBindingOperations.ClearAllBindings()摘录中所述的方法(见下文 MSDN 如何引用数据模板):

清除绑定将删除绑定,以便依赖属性的值更改为没有绑定时的值。此值可以是默认值、继承值或来自数据模板绑定的值。

要清除对象上所有可能属性的绑定,请使用 ClearAllBindings.

于 2012-07-26T12:38:18.087 回答