我正在学习使用 MVVM Light,我正在制作一个程序,它使用数据库优先模型和实体框架。
我有一个绑定到 ViewModel 的 DataGrid,它从 Repository 获取数据。我正在尝试制作一个按钮,单击该按钮会打开一个窗口,该按钮绑定到它自己的 View Model,并允许您通过以下方式将记录添加到 DataGrid将其添加到具有事件的存储库中,该事件在添加项目时调用,以便它可以更新 DataGridViewModel。
这里的一切都很好。我打开表单,输入数据,按添加,记录被添加到数据库中,DataGrid 被存储库事件自动刷新。
当我打开多个“添加记录”窗口时,问题就来了。当我在其中一个窗口中输入内容时,它会出现在另一个窗口中。
我知道这是因为“添加记录”窗口的两个实例都绑定到视图模型的同一个实例。
有没有办法解决这个问题,所以每个窗口都可以独立?我知道目前这看起来不是什么大问题,但是将来我计划使用具有相同视图模型的同一个窗口来编辑记录(这是一个好方法,你能推荐我一些通过的方式吗?记录 id 或记录本身从 DataGrid 窗口到添加/编辑记录窗口?)。
提前致谢!告诉我我是否遗漏了什么,我会添加它:)
编辑: 好的,这就是我想出的:
public EditParentViewModel EditParent
{
get
{
EditParentViewModel editParentViewModelInstance = new EditParentViewModel(ServiceLocator.Current.GetInstance<IParentsRepository>(),
ServiceLocator.Current.GetInstance<IChildrenRepository>(),
ServiceLocator.Current.GetInstance<IBailiffsRepository>());
return editParentViewModelInstance;
}
}
它正在工作,但这是向视图模型提供存储库的正确方法吗?