私がまとめている WPF/MVVM アプリに関するちょっとしたガイダンスを探しています。今日、Google は私を助けてくれませんでした。
したがって、他のモデルをプロパティとして持ついくつかのモデル(ドメインオブジェクト)を持つアプリケーションがあります。現時点では、ネストされたオブジェクトを平坦化し、それを含むオブジェクトの ViewModel でプロパティを公開しています。
私のモデルがより複雑になるにつれて、ViewModels をいくらか分解する方法に苦労しています。私は「複合ビュー」に向かっています。「包含」オブジェクトにはViewとViewModelがあり、「ネストされた」オブジェクトにも独自のものがあります。これにより、再利用可能なコードも得られます。これはプラスになります。
非常に単純な例として、建物があり、各建物にはいくつかのプロパティがあり、次のような住所があるとします。
public class Building
{
public string Name { get; set;}
public Address Address { get; set;}
}
public class Address
{
public string Number { get; set; }
public string Street { get; set; }
}
次に、建物用の ViewModel と、住所用の ViewModel (BuildingViewModel によって公開される) があります。
public class BuildingViewModel
{
public string Name { get; set; } // from model
public AddressViewModel Address { get; set; } // a wrapped instance of Address
// INPC, etc...
}
public class AddressViewModel
{
public string Number { get; set; } // originally from Building
public string Street { get; set; }
// INPC, etc...
}
したがって、示されていませんが、BuildingView とネストされた AddressView があります。最初にデータ テンプレートで ViewModel を使用しているだけです。
では、Address オブジェクトの同期を維持するにはどうすればよいでしょうか。これらを 2 つの ViewModel に分割するとすぐに、Address オブジェクトの 2 つのインスタンスが得られます。私が行ったすべての検索で、オブジェクトをやり取りするメッセージを使用しているのを見てきました。「オブザーバー」パターンが言及されています。
私は正しい方向に向かっていますか、それとも本当に単純なものが欠けていますか? 任意の提案をいただければ幸いです。
FWIW、私は学習曲線に不安を感じていたので、自分のフレームワークをまとめました。さらに、これまではかなり単純でした。