Классические элементы пользовательского интерфейса в Windows Presentation Foundation. Шамшев Ан. Б. - 107 стр.

UptoLike

Составители: 

106
Одним из возможных подходов будет разработка собственной си-
стемы для отслеживания и отмены команд и использование класса
CommandManager для ведения хронологии этих команд. На рис. 24 пока-
зан пример применения именно такого подхода. Окно состоит из двух
текстовых полей (TextBox), в который свободно можно вводить любой
текст, и поля списка (ListBox), в котором отслеживается каждая команда,
имевшая место в обоих текстовых полях. Отменить последнюю команду
можно, щелкнув на кнопке Reverse Last Action (Отменить последнее дей-
ствие).
Рис. 24. Функция Undo в масштабе приложения
Для создания такого решения требуется несколько новых деталей,
первой из которых является класс для отслеживания хронологии команд.
Некоторые разработчики могут попытаться создать специальную систему,
которая будет хранить список недавно выполненных команд. К сожале-
нию, такая система работать не будет, потому что все команды WPF вос-
принимаются как единичные экземпляры. Это означает, что в приложении
существует только один экземпляр каждой команды.
Чтобы понять, в чем состоит проблема, представим, что в приложе-
нии поддерживается команда EditingCommands.Backspace, и пользователь
выполняет несколько таких команд подряд. Можно зарегистрировать этот
факт путем добавления команды Backspace в стек недавних команд, но на