ВУЗ:
Составители:
Рубрика:
112
{
if (lstHistory == null || lstHistory.Items.Count == 0)
e.CanExecute = false;
else
e.CanExecute = true;
}
Для отмены последнего изменения нужно просто вызвать для соот-
ветствующего объекта CommandHistoryItem метод Undo() и затем удалить
его из списка:
private void ApplicationUndoCommand_Executed(object sender, RoutedEven-
tArgs e)
{
CommandHistoryItem historyItem = (CommandHistory-
Item)lstHistory.Items[lstHistory.Items.Count - 1];
if (historyItem.CanUndo) historyItem.Undo();
lstHistory.Items.Remove(historyItem);
}
Несмотря на то, что приведенный пример демонстрирует концепцию
и представляет простое приложение с множеством элементов управления,
которые полностью поддерживают функцию Undo, прежде чем применять
подобный подход в реальном приложении, потребуется внести еще нема-
ло корректировок. Например, придется создать детализацию обработчика
событий CommandManager.PreviewExecuted таким образом, чтобы он иг-
норировал команды, которые точно не должны отслеживаться (например,
события выделения текста с помощью клавиатуры или нажатия клавиши
пробела) подобным образом, также может понадобиться добавить объек-
ты CommandHistoryltem для действий, которые должны быть обратимыми,
но не представлены командами, таких как ввод фрагмента текста и пере-
ход к другому элементу управления.
И, наконец, возможно, еще возникнет потребность ограничить жур-
нал Undo только самыми последними командами.
Страницы
- « первая
- ‹ предыдущая
- …
- 111
- 112
- 113
- 114
- 115
- …
- следующая ›
- последняя »