В пользовательских интерфейсах часто возникает необходимость реализовать кнопку отмены при редактировании некоторых объектов. В WPF было бы неплохо сделать вашу модель представления транзакционной. Я постараюсь объяснить немного подробнее, что я имею в виду:
Модель представления связана с моделью и предоставляет данные таким способом, который легче обрабатывать для представления (используя привязку данных). Изменения в модели представления приводят к изменениям в модели. Однако, если есть кнопка отмены, вы обычно не хотите сразу вносить изменения в модель, поэтому я думаю о каких-то изменениях буферизации. Когда вы фиксируете изменения, они переносятся в модель, в противном случае они удаляются.
Прямо сейчас я реализовал решение, которое создает прокси модели представления, которая привязана к представлению вместо реальной модели представления. Прокси-сервер не связан с моделью, но записывает изменения свойств и вызовов методов с помощью перехватчиков. Существует метод submit, который применяет вызовы к модели реального представления. Я думаю, что это довольно хорошее решение, но оно все еще довольно некорректно (если модель представления содержит коллекции и т. Д.).
Я ищу фреймворк для такого рода вещей. Там что-нибудь есть?
С наилучшими пожеланиями,
Оливер Ханаппи