我正在使用MVVM Light构建C#WPF应用程序。我需要显示两个具有相同视图模型的相同视图的不同实例。但是在ViewModelLocator(我基于MVVM Light的作者显示的示例)中,总是返回相同的实例:
public class ViewModelLocator
{
public ViewModelLocator()
{
SimpleIoc.Default.Register<MainViewModel>();
SimpleIoc.Default.Register<EditorViewModel>();
}
public MainViewModel Main => ServiceLocator.Current.GetInstance<MainViewModel>();
public EditorViewModel Editor => ServiceLocator.Current.GetInstance<EditorViewModel>();
}
这意味着两个视图将使用相同的视图模型。
在调试时,我注意到在构建视图时,只有MVVM light可以检索Main和Editor属性。因此,通过进行以下更改,我可以为每个调用(视图)创建单独的viewmodel实例:
public MainViewModel Main => new MainViewModel();
public EditorViewModel Editor => new EditorViewModel();
我对这种变化不太满意。每当调用该属性时,都会创建一个新实例。我担心我的假设-每个视图只会调用一次getter-可能是错误的。
我的问题是:
是否有更好的方法来确保同一视图的每个实例都有其自己的视图模型?