我正在学习 WPF 和 MVVM,并且我正在尝试制作一个程序,该程序具有 DataGrid 和一个按钮,该按钮通过使用可以将项目添加到 DataGrid 的命令来打开另一个表单。
问题是我不确定我应该如何使用视图模型来实现它。我有 1 个视图模型,用于我的 DataGrid 表单,它可以正常工作,并且正在使用存储库从实体框架中检索数据。
是否可以从添加表单中添加一个对象,并在我按下添加按钮时自动以另一种形式出现在 DataGrid 中,或者我是否需要在 DataGrid 上执行一些刷新操作?我在我的视图模型中使用了可观察的集合,并且我在视图模型的集合参数中实现了 OnPropertyChange 功能。
据我所知,当我将某些东西放入存储库时,每个从中获取数据的视图模型都应该被刷新......虽然我不确定我是否应该编写一些消息代码来让它工作。
我对此感到非常困惑,我希望有人可以在这里阐明...在此先感谢。告诉我我是否错过了提及某些内容,我会添加它:)
编辑:这就是我注册模型的方式:
SimpleIoc.Default.Register<ParentsListViewModel>();
SimpleIoc.Default.Register<EditParentViewModel>();
这就是我注册我的存储库的方式:
SimpleIoc.Default.Register<IParentsRepository, ParentsRepository>();
这就是我检索 ViewModel 实例的方式:
ParentsListViewModel parentsListViewModelInstance = ServiceLocator.Current.GetInstance<ParentsListViewModel>();
EditParentViewModel editParentViewModelInstance = ServiceLocator.Current.GetInstance<EditParentViewModel>();
ParentListViewModel 是我的 DataGrid ViewModel,而 EditParentViewModel 是用于在存储库中添加/编辑记录的。服务定位器自动传递存储库的实例,所以我不知道它如何将存储库的实例传递给 ViewModel。它是否通过相同的实例?