Joa*_*nge 29 .net c# data-binding winforms
我有一个基本属性存储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");
}
Run Code Online (Sandbox Code Playgroud)
所以我this.Food在表单外面设置然后它显示在UI中.
如果我修改this.Food,它会正确更新.如果我以编程方式修改UI,如:
this.textBox.Text = "NewFruit",它没有更新this.Food.
为什么会这样?我也INotifyPropertyChanged为Fruit.Name 实现了,但仍然是一样的.
Joe*_*pro 57
我建议您实现INotifyPropertyChanged并将您的数据绑定代码更改为:
this.textBox.DataBindings.Add("Text",
this.Food,
"Name",
false,
DataSourceUpdateMode.OnPropertyChanged);
Run Code Online (Sandbox Code Playgroud)
那就解决了.
请注意,默认DataSourceUpdateMode值为OnValidation,因此,如果未指定OnPropertyChanged,则在您的验证发生之后才会更新模型对象.