当前位置:  开发笔记 > 编程语言 > 正文

使用代码删除WPF中的绑定

如何解决《使用代码删除WPF中的绑定》经验,为你挑选了3个好方法。

我想在TextBox中显示数据时使用数据绑定.我基本上是这样做的:

 public void ShowRandomObject(IRandomObject randomObject) {
        Binding binding = new Binding {Source = randomObject, Path = new PropertyPath("Name")};
        txtName.SetBinding(TextBox.TextProperty, binding);
    }

我似乎无法找到解除绑定的方法.我将使用许多不同的对象调用此方法,但TextBox将保持不变.有没有办法删除以前的绑定,还是在设置新绑定时自动完成?



1> Ed Ball..:

交替:

BindingOperations.ClearBinding(txtName, TextBox.TextProperty)


Silverlight 3中不存在ClearBinding方法.http://stackoverflow.com/questions/1639219/clear-binding-in-silverlight-remove-data-binding-from-setbinding

2> Pop Catalin..:

有空的时候

BindingOperations.ClearBinding(txtName, TextBox.TextProperty)

对于较旧的SilverLight版本,但不如评论中所述可靠:

txtName.SetBinding(TextBox.TextProperty, null);

启用了C#6.0功能

this.btnFinish.ClearBinding(ButtonBase.CommandProperty);


我用这个解决方案获得了ArgumentNullException(但显然并非总是如此)
这不起作用.当提供null作为第二个参数时,SetBinding被重载并且调用变得不明确
@Simon,当调用不明确时,你总是可以将null值转换为所需类型来解决歧义;)IE :(绑定)null
@Pop,你的权利将起作用,但Eds接近下面是由框架提供,所以显然更可取

3> Arcturus..:

怎么样:

this.ClearValue(TextBox.TextProperty);

我认为它更干净;)


BindingOperations.ClearBinding()在内部调用此方法.
关于这种方法的文档不是很清楚.它读起来好像只是清除值,而不是绑定.但在实践中,这似乎是有效的.
推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有