2012-04-14 34 views
3

我有一個的DevExpress GridControl綁定到的BindingList。我使用了BindingList,以便更改自動應用於綁定控件。這是應該的BindingList的工作方式?

它完美,當我添加或刪除列表中的項目,但是當我改變一個項目,它不會放棄工作,我想要的方式。

我創建了一個在另一個線程運行的foreach循環(以保持UI線程免費更新),其通迭代中的BindingList所有對象並改變它們的一些性質。

我期望它的工作方式是,每個屬性上實時更新GridControl更新。但更新非常「笨重」。有時它一次更新2行,有時我必須單擊GridControl才能獲取新值。

爲什麼會發生這種情況?

它是一個很好的解決方案,以調用每個項目後DataControl.RefreshDataSource()

回答

3

但是當我改變一個項目,它不會按照我想要的方式退出工作。

項目內Becasue更改不somethign的的BindingList在乎 - 即爲什麼項目應執行INotifyPropertyChanged。

基本上,綁定列表表示當LIST發生更改時,但是如果更新屬性 - 列表應該如何知道;)以及爲什麼要關注 - 每個項目分別負責使用所述接口向其屬性發布更新。

在每個項目之後調用DataControl.RefreshDataSource()是否是一個很好的解決方案?

最糟糕的方式。確保項目實施INotifyPropertyChange並相應地提高PropertyChanged事件。

1

BindingList中的對象應實現INotifyPropertyChanged接口,並在其屬性值更改時引發PropertyChanged事件。

相關問題