Отменить в привязках WPF - PullRequest
6 голосов
/ 22 мая 2009

Как обеспечить отмену / возврат с использованием привязок в WPF?

например. Вы реализуете представление Master-Detail с привязками. После редактирования ваши изменения были автоматически сохранены с помощью привязки. Затем вы хотите отменить изменения.

Есть ли что-то готовое к использованию в привязке для WPF? Предоставляет ли WPF некоторые структуры или интерфейсы для?

Этот вопрос не о том, как реализовать отмену / повтор с использованием стеков.

Ответы [ 3 ]

5 голосов
/ 22 мая 2009

Посмотрите на интерфейс IEditableObject . Это позволяет вам сделать снимок объекта, который его реализует, а затем откатиться до этого снимка, если необходимо.

1 голос
/ 21 июня 2011

Может оказаться полезной среда Monitored Undo Framework. http://muf.codeplex.com/

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

В вашем случае, если вы привязываетесь к базовой модели / модели представления, вы можете подключить каркас, чтобы зафиксировать эти изменения, а затем отменить / повторить их по мере необходимости. Если модель реализует INotifyPropertyChanged и использует ObservableCollections, она должна автоматически отражать действия, выполняемые над моделью, включая действия отмены / повторения.

Более подробную информацию и документацию можно найти на сайте codeplex по адресу http://muf.codeplex.com/.

.
1 голос
/ 22 мая 2009

К чему вы привязываете данные?

Если вы привязываете данные к DataSet, вы можете отменить изменения, используя метод DataSet.RejectChanges (), если вы еще не вызвали DataSet.AcceptChanges ().

...