Как уведомить пользовательский интерфейс, когда набор сущностей ChangeTracker имеет изменения

Я создал WPFMVVM приложение, которое делает некоторые 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,

Другие вопросы по тегам