2012-04-14 5 views
3

私はBindingListにバインドされたDevExpress GridControlを持っています。変更が自動的にバインドされたコントロールに適用されるようにBindingListを使用しました。これはBindingListが動作する方法ですか?

リストから項目を追加または削除すると完全に機能しますが、項目を変更すると、必要な方法で作業が終了しません。

BindingList内のすべてのオブジェクトを繰り返し処理し、プロパティの一部を変更する別のスレッド(UIスレッドを自由に更新するため)で実行されるforeachループを作成しました。

私が期待するのは、各プロパティがリアルタイムでGridControlの更新を更新したことです。しかし、更新は非常に「チャンク」です。時には一度に2行を更新することがあります。新しい値を取得するためにGridControlをクリックする必要があることがあります。

どうしてですか?

DataControl.RefreshDataSource()の各項目の後に電話するのは良い解決方法ですか?

答えて

3

しかし、アイテムを変更すると、私が望むように作業を終了しません。

BindingListが気にするものではないということは、アイテムがINotifyPropertyChangedを実装する必要があるということです。

基本的にバインディングリストには、LISTが変更されたときに、プロパティを更新する場合、リストの内容がどのようになっているかが記載されています。

各アイテムの後にDataControl.RefreshDataSource()を呼び出すとよいでしょうか?

最悪の方法です。アイテムがINotifyPropertyChangeを実装し、それに応じてPropertyChangedイベントを発生させるようにしてください。

1

BindingListのオブジェクトは、INotifyPropertyChangedインターフェイスを実装し、プロパティの値が変更されたときにPropertyChangedイベントを発生させる必要があります。

関連する問題