ViewModel の最初のアプローチで DataTemplates を使用しています。
シングルトン ViewModel を複数のビューと共有する必要があります。
そこで、ビューごとにシンプルな ViewModel をセットアップし、Ninject を使用して、カーネルからシングルトン ビューモデルへの参照を取得しているので、考えました。
構造:
MainViewModel
ObservableCollection TabViewModels {get; 設定;}
TabViewModels.Add(新しい View1ViewModel());
View1ViewModel
- コンストラクターで... MainViewModel (シングルトン) への参照を取得しています
これにより、循環参照が発生します... MainViewModel のコンストラクターは、循環するたびに実行されます。
このようにNinjectでビューモデルをバインドしています...
Bind<GridViewModel>().ToSelf().InSingletonScope();
私はこの方法で参照を取得しています...
private MainViewModel _mvm;
public View1ViewModel()
{
_mvm = ViewModelLocator.MainViewModel;
//or
_mvm = ViewModelLocator.Kernel.Get<MainViewModel();
//both produce the same results
}