Как добавить строки с помощью DataGrid и MVVM

1

У меня есть приложение MVVM WPF, которое содержит редактируемый DataGrid. Я подписываю событие DG SelectedItem на свойство в моей модели ViewModel. Это хорошо работает для изменения существующих записей и сохранения изменений в базе данных.

Однако, как я могу определить, когда создается новая строка? Когда я нажимаю на новую строку в DG, событие SelectedItem не срабатывает. После создания новой строки и нажатия на строку exisitng событие SelectedItem запускается, но EntityState НЕ знает, что была добавлена ​​строка. Как добавить новую строку в мою базу данных в DG? Или, есть ли лучший способ сделать это?

Это то, что я сейчас делаю:

Xaml:

<DataGrid AutoGenerateColumns="False"
          ItemsSource="{Binding ContactList}"
          SelectedItem="{Binding SelectedItemContact,  UpdateSourceTrigger=PropertyChanged}"
          .....>

ViewModel:

public Contact SelectedItemContact
{
    get { return _selectedItemContact; }
    set
    {
        if (value != _selectedItemContact)
        {
                bool changesMade = Repository.Context.
                ObjectStateManager.
                GetObjectStateEntries(EntityState.Added |
                EntityState.Deleted |
                EntityState.Modified
                ).Any();
            if (changesMade)
            {
                Repository.Context.SaveChanges();
                MessageBox.Show("Changes Saved!");
            }
                _selectedItemContact = value;
            OnPropertyChanged("SelectedItemContact");
        }
}
Теги:
xaml
wpf
mvvm
datagrid

1 ответ

1
Лучший ответ

Это можно было бы считать дубликатом этого: WPF DataGrid - событие для новых строк?

Посмотрите, поможет ли это вам вообще.

  • 0
    Это должен был быть комментарий.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню