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

UptoLike

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

107
самом деле в стек несколько раз будет добавлен один и тот же объект. В
результате получается, что простого способа сохранения с этой командой
другой информации, например, символа, который был только что удален с
ее помощью, не существует. При желании сохранить это состояние при-
дется создать свою собственную структуру данных, которая будет выпол-
нять эту задачу. В рассматирваемом примере для этого используется класс
CommandHistoryItem.
Каждый объект CommandHistoryItem отслеживает информацию о
перечисленных ниже вещах:
имя команды;
элемент, для которого была выполнена эта команда. В данном
примере имеется два текстовых поля, так что таким элементом
может быть одно из них;
свойство, которое было изменено в целевом элементе. В данном
примере это будет свойство Text класса TextBox;
объект, который можно использовать для сохранения предыдуще-
го состояния задействованного элемента.
Класс CommandHistoryItem также включает один метод универ-
сальный метод Undo(). Этот метод использует рефлексию для применения
к измененному свойству предыдущего значения. Это работает в случае
восстановления текста в элементе TextBox, но в более сложном приложе-
нии может потребоваться иерархия классов CommandHistoryItem, способ-
ных отменять действия разных типов разным образом.
Ниже приведен полный код для класса CommandHistoryItem, кото-
рый использует поддерживаемую в языке С# функцию автоматических
свойств:
public class CommandHistoryItem
{
public string CommandName
{get; set;}
public UIElement ElementActedOn
{get; set;}