3

BindingList<Person{Name, age}>クラスとPersonManager、リストをホストするクラスがあるとします。アプリケーションでは、操作または更新のために、すべてのコントロールが人物リストに関連付けられています。例えば。人物の名前を含むリストボックス、選択した人物の年齢を更新するコントロールなど。

このために「保存する必要がありますか」メカニズムを実装したいと思います。どういうわけか、UI は PersonManager を保存するために変更されたかどうかを認識している必要があります。

私はINotifyPropertyChanged、Person が実装するイベントをキャッチし、propertyChangedEvent が発生したときに発生する PersonManager でイベントを作成することです。イベント転送メカニズムのようなもの。

これはエラーが発生しやすいようです。それを改善する方法について何か提案はありますか?

4

1 に答える 1

1

BindingList内のアイテムがINotifyPropertyChangedを実装している場合、アイテムのPropertyChangedイベントの1つが発生すると、BindingListのListChangedイベントが発生します。

したがって、PersonManagerでBindingListのListChangedイベントを処理し、PersonManagerでダーティブールフラグ(ダーティは古いデータまたは保存されていないデータの一般的なシニフィアン)を設定するだけで済みます。次に、アプリケーションは、データがダーティであるかどうかをPersonManagerに問い合わせることができます。アプリケーションがデータを保存すると、PersonManagerにダーティフラグをリセットするように指示します。PersonManagerがデータの保存も処理する場合は、PersonManagerが独自のフラグをリセットできます。

お役に立てれば。

于 2011-11-03T14:24:04.207 に答える