我是相当新的继MVVM模式。 我使用MVVMLight。 我想知道如何与MVVM光视图模型的多个唯一实例。 对于〔实施例我有一个可以打开的窗户的n个的应用程序。 每一个使用相同的视图模型。 我很好奇,在MVVM最新最好的实践的研究,给他们有自己的实例。
如果我按照MVVM光例如ViewModeLocator将只有一个静态实例,每个窗口将最终使用。
提前致谢。
我是相当新的继MVVM模式。 我使用MVVMLight。 我想知道如何与MVVM光视图模型的多个唯一实例。 对于〔实施例我有一个可以打开的窗户的n个的应用程序。 每一个使用相同的视图模型。 我很好奇,在MVVM最新最好的实践的研究,给他们有自己的实例。
如果我按照MVVM光例如ViewModeLocator将只有一个静态实例,每个窗口将最终使用。
提前致谢。
你是不是有义务视图模型定位器只使用静态视图模型。 这种方法才有意义,如果你的看法都共享同一个视图模型的实例。 对于您的情况,您只需将新的你的视图模型的实例,并将其分配给您创建的每个窗口的DataContext属性。
public void ShowChildWindow(Window parent)
{
var window = new WindowView();
window.DataContext = new ViewModel();
window.Show();
}
简单:
public EndingViewModel EndingViewModel
{
get
{
return ServiceLocator.Current.GetInstance<EndingViewModel>(Guid.NewGuid().ToString());
}
}
当从服务定位器解决确保调用的GetInstance通过一个独特的价值的方法。 在上面的例子我通过在一个GUID。
我真的不手动构建你的对象,因为这违背了在MVVM光依赖注入容器的点。