したがって、これはより一般的な形式で回答された可能性がありますが、ここではより具体的なケースがあり、これをどのように解決すべきかについてのアイデアを得たいと考えています。私は WPF アプリケーションを作成していて、MVVM パターンを使用しようとしています (このパターンを初めて使用します)。
私のドメイン オブジェクトである Viper には、いくつかのプロパティとコレクションがあり、いくつかの既存のアプリケーションで使用されています。INotifyPropertyChanged
新しい WPF アプリでバインドするすべてのプロパティに実装しました。現在、ドメイン オブジェクトと WPF ビューの間に配置するビュー モデルを作成しています。問題は、Viper オブジェクトのコレクションであるすべてのプロパティが、ObservableCollection ではなく List であることです。単純に ObservableCollection にすることはできません。これは、このオブジェクト モデルを使用する他のすべてのアプリケーションに影響を与えるためです (AddRange
などはサポートされていません)。
この新しい WPF アプリは、GUI を制御するために (ビュー モデルを介して) 使用される Viper オブジェクトのリストを維持します。もう少し複雑にするために、アプリはデータの形式でデータを受け取りますList<Viper>
。アプリは、この Viper オブジェクトのリストをループし、受信した各 Viper データを既存の Viper に (インデックスによって) マージします。これは GUI ではList<Event>
ないため、イベントのグリッドは更新されません。ObservableCollection
ビューモデルでに変換してもList<Event>
、OC<Event>
ビューモデルではなく、すべてのプロパティとコレクションをマージするのは基礎となるViperオブジェクトであるため、ビューモデルOCが更新されていないため、変更はイベントを発生させません。Viper オブジェクトとすべてのサブオブジェクトはカスタムを実装しますMergeWith()
入力データをマージする方法を決定する関数。一部は置換、一部は追加、一部は更新を実行します。
この状況を処理する適切な方法は何ですか? 不明な点があればお知らせください。