メインビューのContentControl
に表示される特定の量のUserControls
で使用しているアイテムのリストを含むメインViewModel
があります。 ViewModels
間のデータ交換の現在の方法は、ViewModel
のViewModels
と、UserControl
のメインViewModel
の1つのそれぞれへの参照を作成しています。しかし、私はViewModelLocator
を持っているので、これが正しい方法であるかどうかはわかりません。このクラスには、このようなものをサポートするいくつかの機能があると思います。MVVM Lightの他のViewModelのプロパティへのアクセス
誰でも私がこれをやっていることを教えてもらえますか、それともMVVM Lightでこれを行う良い方法があれば教えてください。
EDIT:
私は別の何かを探していたとき、私は、これを見つけた、これは、より良い解決策でしょうか?
private ViewModelLocator locator = new ViewModelLocator();
ロケータのプロパティを使用して各ViewModelを参照しますか?
EDIT2:
はどうやら、私が仕事だろうと思ったものを、最初に私がメインViewModel
でのみ参照を持っていない、これは働いていたが、私はUserControls
でこれをしようとすると、それは一種の私のアプリがクラッシュします。私は現在、最初の編集の可能な解決策を試みています。
MainViewModel.cs
public class MainViewModel : ViewModelBase
{
private ItemAddViewModel itemAddViewModel;
private ItemsViewModel itemsViewModel;
/// <summary>
/// Initializes a new instance of the MainViewModel class.
/// </summary>
public MainViewModel()
{
ItemsList = Item.GetItemsList();
itemAddViewModel = ServiceLocator.Current.GetInstance<ItemAddViewModel>();
itemsViewModel = ServiceLocator.Current.GetInstance<ItemsViewModel>();
ShowItemsView();
}
...
private void ShowItemsView()
{
CurrentControl = itemsViewModel;
}
...
あなたは正しいです、私はちょうどこれをテストして、それが必要なので、詳細なソリューションのおかげで、それは非常に感謝して動作します! :) – Kryptoxx
私はそれがうれしかった:)。もちろん、より洗練されたIOCコンテナを使用することもできます。これにより、シングルトンのビューモデルやコンストラクタの依存関係注入よりも多くのトリックを行うことができます。シンプルなIOCは単純です... – eMko