触发OnPropertyChanged时绑定的文本框/标签不会更新

时间:2010-07-27 17:01:48

标签: c# data-binding binding inotifypropertychanged

我有一个简单的应用程序,它使用BindingList<(Person)>,people来存储有关员工的信息(Windows窗体)。 Person有几个属性,如Name,DateOfBirth等,并实现INotifyPropertyChanged。

BindingList<(Person)>,people,绑定到绑定源。 DataGridView控件绑定到此源,并在DataGridView上更新预期的属性更改。例如,当我更改人的年龄时,DataGridView会立即更新。

我使用相同的绑定源其他控件时出现问题。我有一个绑定到Person.Name的文本框的text属性,使用与DataGridView相同的绑定源。对Person.Name属性的更改在DataGridView上更新,但不在文本框中更新。

当属性发生变化时,如何更新文本框,如DataGridView?

克里斯

1 个答案:

答案 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); }
        }
    }