c# - 当控件来自 DataTemplate 时,BindingOperations.ClearBinding(...) 不起作用

标签 c# .net wpf data-binding datatemplate

我有点卡在这个上面了。清除不属于 DataTemplate 的某些 TextBoxTextProperty 的绑定(bind)工作正常。但是当 TextBoxDataTemplate 的一部分时,清除绑定(bind)似乎是一个无操作,如下面的片段所示。监视值是 true,即使绑定(bind)可能已被清除:

enter image description here

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

这是 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 中的 TextBoxes,否则,我现在这样做:

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/

相关文章:

c# - 构造函数中的 XML 序列化代码执行顺序 - 重新排序的方式?

c# - 如果 A<T1,T2> 是实际类型的模板,那么为什么允许 typeof(A<,>) ?

.net - 在 C++/.NET 中使用 SqlConnection

c# - DataGridView 选择行并以另一种形式进行编辑

c# - 绑定(bind)工作正常,但智能感知显示 : Cannot resolve property XXX in data context of type 'object'

c# - Silverlight:来自一个用户控件的事件能否在不同的用户控件和/或包含控件上开始动画

c# - 运行时编译期间收到 “You must add a reference to assembly ' netstandard'”错误

c# - 如何通过列名获取单元格值?

.net - 如何对网络连接进行单元测试?

c# - 将一个窗口拖放到另一个窗口中