Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用代码删除WPF中的绑定_C#_Wpf - Fatal编程技术网

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()在内部调用此方法。