メインビューに表示される、ViewModel
一定量で使用しているアイテムのリストを含むメインがあります。存在間でデータを交換する私の現在の方法は、 mainのそれぞれと、 everyの main の 1 つを参照することです。ただし、これが正しい方法であるかどうかはわかりません。これは、このクラスがこのようなものをサポートするための機能を備えていることを期待しているためです。UserControls
ContentControl
ViewModels
ViewModels
ViewModel
ViewModel
UserControl
ViewModelLocator
私がこれをうまくやっているのか、それともMVVM Lightでこれを行うより良い方法があるのか 誰にも教えてもらえますか?
編集:
何か違うものを探していたときにこれを見つけましたが、これはより良い解決策でしょうか?
private ViewModelLocator locator = new ViewModelLocator();
そして、ロケーターのプロパティを使用して各ビューモデルを参照しますか?
EDIT2:
どうやらうまくいくと思っていたのはうまくいきません。最初はメインで参照しかなくViewModel
、これでうまくいきましたが、これを試してみるとUserControls
アプリがクラッシュします。私は現在、最初の編集の可能な解決策を試しています。
MainViewModel.cs (その他は同様で、メインの ViewModel のみを参照しています)
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;
}
...