MVVM Light и Отменить / Повторить? - PullRequest
3 голосов
/ 31 августа 2010

Я, вероятно, смешиваю здесь некоторые обязанности (и, возможно, даже терминологию), но не могу полностью обдумать это.

Есть ли какая-либо связь между шаблоном команд и командами, найденными в MVVMСвет (а значит и в WPF так же)?Мне бы очень хотелось реализовать какой-нибудь механизм отмены / повтора, но я не могу понять, существует ли «MVVM Light» для этого.

И если это не относится к MVVM Light,Как я могу подойти к командованию с Undo / Redo в «сыром», не работая против MVVM Light WPF?

Ответы [ 3 ]

5 голосов
/ 31 августа 2010

Команды в MVVM Light и WPF в целом - это способ инкапсулировать произвольные наборы функций в одном объекте и интерфейсе, а также подключить любое количество элементов пользовательского интерфейса для выполнения этого действия.

Эти команды могут быть включены в реализацию шаблона команд для функций отмены / возврата, но вам нужно больше.

Вы можете свернуть свой собственный стек команд, который я выбрал в своем текущем проекте WPF (с использованием Prism).

По сути, это изменение мышления, при котором каждое изменение, которое пользователь может сделать с помощью пользовательского интерфейса

  1. заключено в команду
  2. имеет соответствующую команду отмены
  3. попадает в стек

Существуют также проекты с открытым исходным кодом, которые могут помочь с этим, включая http://undo.codeplex.com/,, который является побочным проектом Кирилла Осенкова, члена команды Visual Studio.

2 голосов
/ 21 июня 2011

Я реализовал отмену / повтор для приложения WPF и опубликовал свой код отмены / восстановления в http://muf.codeplex.com/.

Я подумал о том, чтобы попробовать рекомендованный подход с использованием шаблона Command для инкапсуляции логики.На бумаге это кажется хорошим, но в моем случае мне было очень сложно понять, как поместить каждое действие в команду, которая могла бы надежно отменить / повторить набор изменений.Вместо этого я выбрал «мониторинг» базовой модели на предмет изменений и затем сохранил эти изменения в стеке отмены.Это похоже на шаблон команды, но в подходе «снизу вверх».Действия отмены «выпадают» в результате изменения модели.

Действия собираются путем перехвата изменений в установщиках модели, сохранения их в единицу изменения с делегатами для отмены / повторного изменения, а затем помещения их в стек изменений.Библиотека MUF включает логику для управления стеком, создания единиц изменения и т. Д.

Комментарии и вопросы приветствуются на сайте codeplex (http://muf.codeplex.com/).Там же вы найдете полную документацию и примеры приложений.

Вы также можете получить ее через NuGet.Просто найдите «MUF» или «Monitored Undo Framework».Включает поддержку Silverlight 4.0, а также .NET 3.5, 4.0 и WP7.

1 голос
/ 31 августа 2010

Я не знаю каких-либо присущих функций отмены / возврата в MVVM или WPF, боюсь.

MVVM Light - очень хороший легкий инструментарий для быстрой реализации только MVVM. Любые дополнительные шаблоны, которые вы должны будете реализовать самостоятельно.

...