私はMVVMライトの調査を開始し、さまざまなviemModelの設計を開始しています。私は長い間私が探しているものを見つけるために閲覧しましたが、私はそれを得ることができませんでした:-(。
私が持っているサンプルの1つは、ModelViewLocator内で処理される単一のMainViewModelに基づいています。ほとんどの場合、複数のviewModelがあるので、すべてのviewModelを単一のViewModelLocatorファイルで定義する必要がありますか、それともビューごとに1つのViewModelLocatorが必要ですか?
言い換えれば、これを取得する必要があります:MainViewModel-> MainViewModelLocator PictureViewModel-> PictureViewModelLocator
大丈夫ですが、1つの質問があります。ViewModel1、2、3として作成した3つのviewModelがあるとします。ViewModelLocationで、MainViewModelと同じ構造を作成して、そのインスタンスを作成し、メインプロパティを作成します。モデルインスタンスにアクセスします。
私が見つけた問題は、各viewModelsに対応する各ビューがViewModelLocator.ViewModelxとして独自のデータコンテキストに設定されている場合、ビューインスタンスは設計時に作成され、ビューのコンストラクター中に次のことを行う必要がある場合に問題が発生することです。 WCFサービスからデータを取得する外部クラスを呼び出します。「インスタンス作成エラー」が発生します。
一方、各ビューでバインドした場合、ViewModelLocator.ViewModelxからではなく、直接ViewModelxとしてバインドすると、そのエラーは発生せず、より適切に機能します。
それで、行うべき適切な方法と論理パスは何ですか:
1-MainViewModelは他のすべてのviewModelを作成する必要がありますか?2-各ビューは、ViewModelLocator内の独自のMainStaticプロパティにバインドする必要がありますか?3-各ビューはViewModelの独自のインスタンスを作成しますか?
私が行った方法は、ViewModelコンストラクターの作成中に外部クラスからサービスデータを返すビューは、ViewModelに直接バインドした場合にのみ機能するというものですが、問題がありますか?