我有一个简单的应用程序,它使用BindingList<(Person)>,people来存储有关员工的信息(Windows窗体)。 Person有几个属性,如Name,DateOfBirth等,并实现INotifyPropertyChanged。
BindingList<(Person)>,people,绑定到绑定源。 DataGridView控件绑定到此源,并在DataGridView上更新预期的属性更改。例如,当我更改人的年龄时,DataGridView会立即更新。
我使用相同的绑定源其他控件时出现问题。我有一个绑定到Person.Name的文本框的text属性,使用与DataGridView相同的绑定源。对Person.Name属性的更改在DataGridView上更新,但不在文本框中更新。
当属性发生变化时,如何更新文本框,如DataGridView?
克里斯
答案 0 :(得分:0)
很快,这是未经测试的,它可能需要由Dispatcher处理。尝试使用以下代替TextBox
public class DispatchedTextBox : TextBox
{
DispatchEvent _propertyChanged = new DispatchEvent();
protected override void OnPropertyChanged(PropertyChangedEventArgs e)
{
this._propertyChanged.Fire(this, e);
}
protected override event PropertyChangedEventHandler PropertyChanged
{
add { this._propertyChanged.Add(value); }
remove { this._propertyChanged.Remove(value); }
}
}