在MVVM Light中,如果我有一个数据网格绑定(2路)到一个obersvable集合,当我在编辑几个记录并添加新记录后最终点击更新时,如何确定哪些已添加新记录和哪些添加新记录已被编辑。 (我猜哪个主键id = 0仍然可以标记为新的,但如何检查哪些被编辑)
是否有内置房产?或者我创建了一个标记这些记录的属性?
由于
答案 0 :(得分:1)
您可以附加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.
}