开发者

MVVM Light how to determinte which records changed

in MVVM Light, if I have a datagrid binded(2 way) to an obersvable collection, and when I finally hit update after editing couple records and adding new ones, how do I determine which ones have been added new and which ones have been edited. (I guess which have primary key id = 0 can still be flagged as new but how to check which were edited)

Is there an inbuilt property? or I have create a p开发者_如何学JAVAroperty to flag those records?

Thanks


You can attach to the CollectionChanged event on the ObservableCollection to find that out.

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
    }
    ...
 }

As for finding out which ones have been edited this does not act on the collection itself but on the entities within the collection. A good idea is to have a ViewModel/Model represent each row and implement INotifyPropertyChanged or have IsDirty property that you can check against.

So when an item gets added attach to some event that will alert you of any changes. (you can do this inside the above CollectionChanged handler or some method that creates the model for you).

model.PropertyChanged += ModelChanged;
...
private void ModelChanged(object sender, PropertyChangedEventArgs e)
{
    Model model = (Model)sender;
    //Record in your own way that model has changed.
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜