Привязка данных для TextBox - PullRequest
28 голосов
/ 24 октября 2009

У меня есть базовое свойство, в котором хранится объект типа Fruit:

Fruit food;
public Fruit Food
{
    get {return this.food;}
    set
    {
        this.food= value;
        this.RefreshDataBindings();
    }
}

public void RefreshDataBindings()
{
    this.textBox.DataBindings.Clear();
    this.textBox.DataBindings.Add("Text", this.Food, "Name");
}

Итак, я установил this.Food вне формы, а затем он появился в интерфейсе пользователя.

Если я изменю this.Food, он обновляется правильно. Если я изменю пользовательский интерфейс программно, как:

this.textBox.Text = "NewFruit", это не обновляет это. Еда.

Почему это могло быть? Я также реализовал INotifyPropertyChanged для Fruit.Name, но все так же.

Ответы [ 4 ]

57 голосов
/ 24 октября 2009

Я рекомендую вам внедрить INotifyPropertyChanged и изменить код привязки данных на этот:

this.textBox.DataBindings.Add("Text",
                                this.Food,
                                "Name",
                                false,
                                DataSourceUpdateMode.OnPropertyChanged);

Это все исправит.

Обратите внимание, что по умолчанию DataSourceUpdateMode равно OnValidation, поэтому, если вы не укажете OnPropertyChanged, объект модели не будет обновляться до тех пор, пока не пройдут проверки.

1 голос
/ 26 июня 2014

Вам нужен объект источника связывания, чтобы выступать в качестве посредника и помогать в связывании. Затем вместо обновления пользовательского интерфейса обновите подчеркивающую модель.

var model = (Fruit) bindingSource1.DataSource;

model.FruitType = "oranges";

bindingSource.ResetBindings();

Ознакомьтесь с BindingSource и простой привязкой данных для Windows Forms .

0 голосов
/ 07 июля 2017

Мы можем использовать следующий код

textBox1.DataBindings.Add("Text", model, "Name", false, DataSourceUpdateMode.OnPropertyChanged);

Где

  • "Text" - свойство текстового поля
  • model - здесь объект модели введите код
  • "Name" - значение модели для привязки текстового поля.
0 голосов
/ 24 октября 2009

Невозможно привязать данные к свойству, а затем явно присвоить значение свойству с привязкой к данным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...