2010-07-27 26 views
0

我有一個簡單的應用程序,它使用BindingList <(Person)> people來存儲員工信息(Windows窗體)。 Person有幾個屬性,如Name,DateOfBirth等,並實現INotifyPropertyChanged。當OnPropertyChanged被解僱時綁定的文本框/標籤沒有更新

BindingList <(Person)>,people綁定到一個綁定源。 DataGridView控件綁定到此源,並且正如期望的屬性更改在DataGridView上更新。例如,當我改變人的年齡時,DataGridView立即更新。

當我使用相同的綁定源其他控件時,會出現我的問題。我將文本框的文本屬性綁定到Person.Name,使用與DataGridView相同的綁定源。更改DataGridView上的Person.Name屬性更新,但不更改爲文本框。

當屬性更改時,如何使文本框更新與DataGridView一樣?

克里斯

+1

您的綁定到TextBox包括DataSourceUpdateMode.OnPropertyChanged參數嗎? – TreDubZedd 2010-07-27 17:10:09

+0

@TreDub:做出答案,這是可能的。對。 – 2010-07-27 17:13:56

+0

是的,它被設置爲DataSourceUpdateMode.OnPropertyChanged。它不會更新值。還有什麼我需要啓用允許OnPropertyChanged工作? – 2010-07-27 17:15:30

回答

0

就很快,這是未經測試,它可能需要由調度器來處理。嘗試使用以下代替您的文本框

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