У меня окно с панелью меню. Есть 3 пунктов меню (команды):Проверьте, не изменилось ли свойство
- New File
- Загрузить файл
- Сохранить файл
В моей MVVM, у меня есть несколько propertys. Если пользователь загружает файл, свойства будут заполнены. Пользователь может что-то сделать в программе (изменить значение свойств ..) и может сохранить значения свойств в XML-файл. Итак, если пользователь сохраняет файл и нажимает «Новый файл», будет создан новый файл, что означает, что я «сброшу» все свойства. Если пользователь что-то делает в программе и не сохранил файл и не щелкнул мышью, а затем в «Новый файл», появится MessageBox. Он должен сказать: «Вы действительно хотите, чтобы сохранить файл, .... несохраненные файлы будут перезаписаны» (думаю, вы знаете, что я имею в виду ..)
Итак, чтобы очистить его, вот некоторые сценарии:
- Пользователь изменяет propertys в программе и нажимает на «New File» -> MessageBox выскакивает
- Пользователь изменяет propertys в программе и нажимает на «Сохранить файл» и нажимает на «New File» -> propertys будет сброшена
- Пользователь нажимает на «Загрузить файл» и нажимает «Новый файл» -> Свойства будут сброшены
Как я могу проверить, изменилось ли свойство? Я мог бы иметь глобальное логическое значение «HasChanged». Если пользователь нажимает кнопку «Сохранить» или «Загрузить», HasChanged = false
. Если пользователь что-то делает, HasChanged = true
... Я мог бы разместить это в каждом сетевом устройстве, но это глупое решение ...
Вы можете установить флаг после подключения к [ 'PropertyChanged'] (http://msdn.microsoft.com/en-US/library/system.componentmodel.inotifypropertychanged.propertychanged.aspx) события внутри view model ... –
Я использую PropertyChanged следующим образом: 'RaisePropertyChanged (() => Number);' и использовать его из ObservableObject, поэтому я не могу изменить метод. – Rudi
Но вы можете подписаться на * событие * внутри модели представления. Он будет уволен каждый раз, когда будет изменено любое свойство, которое уведомляет ... –