MVVM Light, как определить, какие записи изменились - PullRequest
1 голос
/ 28 декабря 2010

в MVVM Light, если у меня есть сетка данных, привязанная (2-сторонняя) к наблюдаемой коллекции, и когда я наконец нажимаю кнопку обновления после редактирования пары записей и добавления новых, как определить, какие из них были добавлены новые, а какиебыли отредактированы.(Я думаю, у которых первичный ключ id = 0 все еще можно пометить как новый, но как проверить, какие из них были отредактированы)

Есть ли встроенное свойство?или у меня есть свойство для пометки этих записей?

Спасибо

1 Ответ

1 голос
/ 28 декабря 2010

Вы можете присоединиться к событию 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.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...