我有一个主ViewModel
目录,其中包含我正在使用的一定数量的项目列表,UserControls
这些项目显示在ContentControl
主视图的 a 中。我目前在存在对 main中的每一个和每个main 中的ViewModels
一个进行引用之间交换数据的方式。但是我不知道这是不是这样做的正确方法,因为我有一个并且我有点希望这个类有一些功能来支持这样的东西。ViewModels
ViewModel
ViewModel
UserControl
ViewModelLocator
谁能告诉我我在做什么,或者在 MVVM Light 中是否有更好的方法?
编辑:
我在寻找不同的东西时发现了这个,这会是更好的解决方案吗?
private ViewModelLocator locator = new ViewModelLocator();
然后使用定位器属性来引用每个 ViewModel?
编辑2:
显然,我认为可行的方法不起作用,起初我在主要内容中只有引用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;
}
...