Подтвердить что ты не робот

Удалить привязку в WPF с помощью кода

Я хотел бы использовать привязку данных при отображении данных в TextBox. Я в основном делаю, как:

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

Я не могу найти способ снять привязку. Я буду называть этот метод множеством разных объектов, но TextBox останется прежним. Есть ли способ удалить предыдущую привязку или это делается автоматически, когда я устанавливаю новое связывание?

4b9b3361

Ответ 1

Когда доступно

BindingOperations.ClearBinding(txtName, TextBox.TextProperty)

Для старых версий SilverLight, но не надежных, как указано в комментариях:

txtName.SetBinding(TextBox.TextProperty, null);

Ответ 2

В качестве альтернативы:

BindingOperations.ClearBinding(txtName, TextBox.TextProperty)

Ответ 3

Как насчет:

this.ClearValue(TextBox.TextProperty);

Это гораздо чище, я думаю;)

Ответ 4

Как насчет просто

txtName.Text = txtName.Text;

Вам нужно будет установить значение после его очистки. Это работает в SL4 по крайней мере.