在MVVM Light中,如果我有一个datagrid(2种方式)绑定(bind)到一个可观察的集合,并且当我在编辑几个记录并添加新记录后最终按下update时,如何确定哪些记录已被添加,哪些记录已被编辑。 (我猜哪个主键ID = 0仍可以标记为新键,但是如何检查已编辑的键)
有没有内置属性(property)?还是我创建了一个属性来标记这些记录?
谢谢
最佳答案
您可以将附加到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/