如何在使用MVVM光视图模型的多个唯一实例?(How to have Multiple unique

2019-08-01 19:18发布

我是相当新的继MVVM模式。 我使用MVVMLight。 我想知道如何与MVVM光视图模型的多个唯一实例。 对于〔实施例我有一个可以打开的窗户的n个的应用程序。 每一个使用相同的视图模型。 我很好奇,在MVVM最新最好的实践的研究,给他们有自己的实例。

如果我按照MVVM光例如ViewModeLocator将只有一个静态实例,每个窗口将最终使用。

提前致谢。

Answer 1:

你是不是有义务视图模型定位器只使用静态视图模型。 这种方法才有意义,如果你的看法都共享同一个视图模型的实例。 对于您的情况,您只需将新的你的视图模型的实例,并将其分配给您创建的每个窗口的DataContext属性。

public void ShowChildWindow(Window parent)
{
    var window = new WindowView();
    window.DataContext = new ViewModel();
    window.Show();
}


Answer 2:

简单:

public EndingViewModel EndingViewModel
{
    get 
    { 
      return ServiceLocator.Current.GetInstance<EndingViewModel>(Guid.NewGuid().ToString()); 
    }
}

当从服务定位器解决确保调用的GetInstance通过一个独特的价值的方法。 在上面的例子我通过在一个GUID。

我真的不手动构建你的对象,因为这违背了在MVVM光依赖注入容器的点。



文章来源: How to have Multiple unique instances of ViewModel using MVVM Light?