Пометить объект (не объект, не фреймворк) как грязный в WPF ViewModel

В моей viewmodel есть свойство CurrentObject типа SomeDomainType который сериализуем.

Существует форма для редактирования ее свойств, и одной из кнопок является "Зафиксировать изменения", привязанная к базе данных ICommand. CommitChangesCommand,

Теперь я ожидаю, что эта кнопка будет активна (через CanCommitChangesCommand(), правильно соединенный с Джошем Смитом RelayCommand) только когда объект был изменен, то есть объект является "грязным".

Скажу еще раз, что я хочу спросить:

"Как я могу пометить объект как грязный, чтобы я мог иметь private bool ThatPropertyIsDirty() способ проверить, что внутри какой-то CanExecute()?"

1 ответ

Решение

По звуку этого:

  1. Добавить IsDirty собственность на ваш SomeDomainType
  2. В сеттер IsDirty поднять NotifyPropertyChanged событие для IsDirty
  3. Во всех свойствах на вашем SomeDomainType что вы измените, чтобы сделать объект считается Dirtyв своих сеттерах IsDirty к истине

Это предполагает ваше SomeDomainType реализует INotifyPropertyChanged интерфейс. Если нет, создайте класс-оболочку вокруг SomeDomainType и внесите вышеуказанные изменения в эту оболочку.

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