Пометить объект (не объект, не фреймворк) как грязный в WPF ViewModel
В моей viewmodel есть свойство CurrentObject
типа SomeDomainType
который сериализуем.
Существует форма для редактирования ее свойств, и одной из кнопок является "Зафиксировать изменения", привязанная к базе данных ICommand. CommitChangesCommand
,
Теперь я ожидаю, что эта кнопка будет активна (через CanCommitChangesCommand()
, правильно соединенный с Джошем Смитом RelayCommand
) только когда объект был изменен, то есть объект является "грязным".
Скажу еще раз, что я хочу спросить:
"Как я могу пометить объект как грязный, чтобы я мог иметь
private bool ThatPropertyIsDirty()
способ проверить, что внутри какой-тоCanExecute()
?"
1 ответ
По звуку этого:
- Добавить
IsDirty
собственность на вашSomeDomainType
- В сеттер
IsDirty
поднятьNotifyPropertyChanged
событие дляIsDirty
- Во всех свойствах на вашем
SomeDomainType
что вы измените, чтобы сделать объект считаетсяDirty
в своих сеттерахIsDirty
к истине
Это предполагает ваше SomeDomainType
реализует INotifyPropertyChanged
интерфейс. Если нет, создайте класс-оболочку вокруг SomeDomainType
и внесите вышеуказанные изменения в эту оболочку.