【发布时间】:2013-01-27 04:12:13
【问题描述】:
我正在学习 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>();
ParentsListViewModel 是我的 DataGrid ViewModel,而 EditParentViewModel 是用于在存储库中添加/编辑记录的模型。 服务定位器自动传递存储库的实例,所以我不知道它如何将存储库的实例传递给 ViewModel。它是否通过相同的实例?
【问题讨论】:
标签: wpf entity-framework mvvm datagrid mvvm-light