在 MVVM Light 中,如果我有一个数据网格绑定(bind)(2 方式)到一个 obersvable 集合,并且当我在编辑几个记录并添加新记录后最终点击更新时,我如何确定哪些是新添加的,哪些是已编辑的. (我猜哪个主键 id = 0 仍然可以标记为新但如何检查哪些被编辑)
有内置属性吗?或者我已经创建了一个属性来标记这些记录?
谢谢
最佳答案
您可以附加到 CollectionChanged
ObservableCollection
上的事件找出答案。
private void MyCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
if(e.Action == NotifyCollectionChangedAction.Add)
{
//use e.NewItems for added items
}
else if(e.Action == otifyCollectionChangedAction.Remove)
{
//use e.OldItems for removed items
}
...
}
至于找出哪些已被编辑,这并不作用于集合本身,而是作用于集合中的实体。一个好主意是有一个
ViewModel
/Model
表示每一行并实现 INotifyPropertyChanged
或有 IsDirty
您可以检查的属性。因此,当添加一个项目时,附加到某个事件会提醒您任何更改。 (您可以在上面的
CollectionChanged
处理程序或一些为您创建模型的方法中执行此操作)。model.PropertyChanged += ModelChanged;
...
private void ModelChanged(object sender, PropertyChangedEventArgs e)
{
Model model = (Model)sender;
//Record in your own way that model has changed.
}
关于.net - MVVM Light 如何判断哪些记录发生了变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4548610/