Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Data binding for TextBox

I have a basic property that stores an object of type 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"); } 

So I set this.Food outside the form and then it shows up in the UI.

If I modify this.Food, it updates correctly. If I modify the UI programmatically like:

this.textBox.Text = "NewFruit", it doesn't update this.Food.

Why could this be? I also implemented INotifyPropertyChanged for Fruit.Name, but still the same.

like image 963
Joan Venge Avatar asked Oct 23 '09 21:10

Joan Venge


1 Answers

I Recommend you implement INotifyPropertyChanged and change your databinding code to this:

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

That'll fix it.

Note that the default DataSourceUpdateMode is OnValidation, so if you don't specify OnPropertyChanged, the model object won't be updated until after your validations have occurred.

like image 67
Joepro Avatar answered Sep 22 '22 15:09

Joepro