WPF отслеживает изменения свойств - PullRequest
2 голосов
/ 21 марта 2019

У меня часто возникает следующая задача:

У меня есть коллекция объектов (например, клиенты), и я хочу предоставить пользователю редактор для этих объектов. Обычно у меня есть какой-то элемент управления списком в левой части редактора и форма справа. Форма отображает свойства объекта, выбранного в данный момент с левой стороны.

Что касается подтверждения любых изменений, существует как минимум две стратегии:

  • сделать редактор модальным диалоговым окном и назначить ему кнопки ОК / Отмена. При ОК сохранить все изменения для всех объектов
  • Дайте редактору кнопку Сохранить над или под формой с правой стороны, которая позволит пользователю подтвердить изменения выбранного в данный момент объекта.

Мой вопрос касается второй стратегии, реализованной в виде приложения MVVM с WPF:

Я хотел бы дать своему пользователю отзыв о несохраненных изменениях. Такие приложения, как текстовые редакторы, часто решают эту проблему, активируя кнопку «Сохранить» при любых изменениях и отключая ее снова, когда пользователь нажимает ее, чтобы подтвердить свои изменения.

Если я правильно понимаю, мне придется отслеживать изменения любых связанных свойств в моей форме (при поддержке класса модели). Обычно в моих модельных классах используются автоматические свойства (без явных методов получения и установки). Нужно ли мне писать явные методы получения для всех моих свойств, чтобы активировать кнопку Сохранить, когда что-то изменилось, или есть более разумный способ добиться этого?

1 Ответ

3 голосов
/ 21 марта 2019

Согласно шаблону MVVM, ваши ViewModels должны реализовать интерфейс INotifyPropertyChanged, чем вы можете легко подписаться на PropertyChanged событие и отслеживать изменения свойств

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...