У меня есть приложение 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");
}
}
Это можно было бы считать дубликатом этого: WPF DataGrid - событие для новых строк?
Посмотрите, поможет ли это вам вообще.