Как уведомить пользовательский интерфейс, когда набор сущностей ChangeTracker имеет изменения
Я создал WPF
MVVM
приложение, которое делает некоторые CRUD
операция к Entity
задавать.
В пользовательском интерфейсе у меня есть сохранение / фиксация button
, что я хотел бы сделать, это создать событие или notification
в моем ViewModel
к View
когда Entity
задавать ChangeTracker
есть какие-либо изменения и связать это с IsEnabled
на button
,
Как я мог этого добиться?
Я знаю, что есть следующее свойство, к которому я могу подключиться:
dbcontext.ChangeTracker.HasChanges();
или же
db.ChangeTracker.Entries().Any(e => e.State == EntityState.Added
|| e.State == EntityState.Modified
|| e.State == EntityState.Deleted);
Я просто не уверен, как это реализовать
1 ответ
Я бы реализовал следующее свойство в ViewModel:
public bool dbHasChanges => dbcontext.ChangeTracker.HasChanges();
А затем привязать к нему в XAML:
<Button IsEnabled="{Binding dbHasChanges}" />
В таком случае будет происходить оповещение об этом свойстве при каждом обновлении базы данных:
NotifyPropertyChanged("dbHasChanges");
Это для случаев, когда база данных изменяется только из вашего приложения (вы выполняете приведенный выше код всякий раз, когда пользователь вносит изменения).
Вы также можете преобразовать это в метод, чтобы не указывать имя свойства более одного раза:
private void DBChangeOccured()
{
NotifyPropertyChanged("dbHasChanges");
}
Вы можете просто вызвать этот метод вместо NotifyPropertyChanged
,