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

UptoLike

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

105
поддерживающем обработку сразу двух файлов (рис. 23), необходимо
знать, к какому именно файлу должно применяться сохранение.
Решение этой задачи заключается в установке свойства
CommandParameter. Это можно сделать прямо в элементе управления
ICommandSource, причем можно даже использовать выражение привязки,
извлекающее значение из другого элемента управления. Например, ниже
показано, как установить процент масштаба для кнопки, связанной с ко-
мандой Zoom, за счет считывания значения из другого текстового поля.
<Button Command="NavigationCommands.Zoom"
CommandParameter="{Binding ElementName=txtZoom, Path=Text}"> Zoom To
Value
</Button>
К сожалению, такой подход работает не всегда. Например, в тексто-
вом редакторе, поддерживающем обработку сразу двух файлов, кнопка
Save (Сохранить) просто повторно используется для каждого элемента
TextBox, но каждому элементу TextBox необходимо указывать разные
имена файлов. В подобных ситуациях следует либо сохранять информа-
цию в каком-то другом месте (например, в отдельной коллекции, индек-
сирующей имена файлов в соответствии с текстовыми полями), либо за-
пускать команду программно следующим образом:
ApplicationCommands.New.Execute(theFileName, (Button)sender);
И в том и в другом случае параметр делается доступным в обработ-
чике событий Executed через свойство ExecutedRoutedEventArgs.Parameter.
6.13. Отслеживание и отмена команд
Один из недостатков модели Command это отсутствие возможно-
сти делать команду обратимой. Хотя доступна команда
ApplicationCommands. Undo, она обычно используется элементами редак-
тирования, которые поддерживают свои собственные журналы данных
для отката. Если планируется поддерживать функцию Undo в масштабах
приложения, необходимо отслеживать предыдущее состояние внутренне и
восстанавливать его при инициировании команды Undo.