Как определить, нужно ли сохранять страницу, используя WPF MVVM? - PullRequest
4 голосов
/ 14 мая 2010

У меня есть приложение, в котором вы можете открывать много разных элементов (например, в Excel вы можете открывать много разных вкладок). Если элемент или «вкладка» изменены, я хочу обнаружить изменения и разрешить использование для сохранения или запроса пользователь закрывается без сохранения. Возможно включить / отключить кнопку сохранения, когда сохранение доступно / недоступно. Я использую c # WPF с шаблоном MVVM.

Ответы [ 2 ]

5 голосов
/ 14 мая 2010

Распространенным паттерном для этой проблемы является паттерн isDirty. По сути, у вас есть логический флаг «isDirty» для всех ваших частей данных, чтобы указать, были ли они изменены со времени последнего сохранения. Это поле обновляется при изменении данных или сохранении документа.

Вот пример реализации isFirty в WPF: Почти автоматический INotifyPropertyChanged, автоматический IsDirty и автоматический ChangeTracking

2 голосов
/ 14 мая 2010

Вы можете создать свойство в своем классе модели представления, которое указывает, была ли модель представления изменена с момента ее создания. Свойство может иметь тип bool и может называться IsDirty. Это свойство должно быть установлено на true, когда свойство вашей модели представления изменяется. Вы можете определить это поведение в методе set ваших свойств. Когда пользователь хочет закрыть графический интерфейс, проверьте, имеет ли свойство IsDirty значение true, и сохраните изменения.
Привязать к свойству IsDirty, чтобы включить / отключить кнопку сохранения.

...