C# 使用代码删除WPF中的绑定
我想在文本框中显示数据时使用数据绑定。我基本上是这样做的:C# 使用代码删除WPF中的绑定,c#,wpf,C#,Wpf,我想在文本框中显示数据时使用数据绑定。我基本上是这样做的: public void ShowRandomObject(IRandomObject randomObject) { Binding binding = new Binding {Source = randomObject, Path = new PropertyPath("Name")}; txtName.SetBinding(TextBox.TextProperty, binding); }
public void ShowRandomObject(IRandomObject randomObject) {
Binding binding = new Binding {Source = randomObject, Path = new PropertyPath("Name")};
txtName.SetBinding(TextBox.TextProperty, binding);
}
我似乎找不到办法解开装订。我将使用许多不同的对象调用此方法,但TextBox将保持不变。是否有方法删除以前的绑定,或者在设置新绑定时自动删除?如果可用
BindingOperations.ClearBinding(txtName, TextBox.TextProperty)
对于较旧的SilverLight版本,但不可靠,如注释中所述:
txtName.SetBinding(TextBox.TextProperty, null);
C#6.0功能已启用
this.btnFinish.ClearBinding(ButtonBase.CommandProperty);
那么:
this.ClearValue(TextBox.TextProperty);
我觉得它干净多了;) 或者:
BindingOperations.ClearBinding(txtName, TextBox.TextProperty)
就这样怎么样
txtName.Text = txtName.Text;
无论如何,在清除该值之后,必须设置该值。
这至少在SL4中是有效的。我怀疑在设置新绑定时删除了以前的绑定,因为我找不到任何有关如何进行绑定的信息。谢谢这不管用。SetBinding被重载,当第二个参数为null时,调用变得不明确parameter@Simon,当调用不明确时,始终可以将null值强制转换为所需类型以解决不明确;)IE:(装订)null@Pop,您的权利将起作用,但是下面的Eds方法是由框架提供的,因此显然更可取。使用此解决方案(但显然并非总是)我会得到ArgumentNullException Visual Basic不会解决.SetBinding(…,Nothing)调用,因为两个签名都采用引用类型(字符串和BindingBase)。我更喜欢这个。Silverlight3中不存在ClearBinding方法@BobKing将其(
Nothing
)转换为所需的类型。有关此方法的文档不是很清楚。它读起来好像只清除值,而不是绑定。但实际上,这似乎是可行的。BindingOperations.ClearBinding()在内部调用此方法。