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

UptoLike

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

98
отключены все три команды, если к этому элементу не был специально
присоединен включающий их обработчик событий CanExecute.
В этом примере есть одна интересная деталь. Команды Copy, Cut и
Paste обрабатываются элементом управления TextBox, на который наведен
фокус. Однако каждая из них инициируется соответствующей кнопкой в
панели инструментов, которая представляет собой уже совершенно от-
дельный элемент. В данном примере этот процесс проходит гладко, пото-
му что кнопки размещены в панели инструментов, а класс ToolBar вклю-
чает встроенную логику, которая для свойства CommandTarget его потом-
ков динамически устанавливает в качестве значения именно тот элемент
управления, на котором в текущий момент находится фокус.
В случае размещения кнопок в другом контейнере (отличном от
ToolBar и Menu) такого преимущества не будет. То есть кнопки не будут
работать до тех пор, пока для них вручную не будет установлено свойство
CommandTarget, для чего придется использовать выражения привязки с
именем целевого элемента. Например, если текстовое поле имеет имя
txtDocument. кнопки потребуется определить следующим образом:
<Button Command="Cut"
CommandTarget="{Binding ElementName=txtDocument}">Cut</Button> <Button
Command="Copy"
CommandTarget="{Binding ElementName=txtDocument}">Copy</Button> <Button
Command="Paste"
CommandTarget="{Binding ElementName=txtDocument}">Paste</Button>
Другой вариант состоит в создании новой области действия фокуса с
помощью присоединяемого свойства FocusManager.IsFocusScope. Это
укажет WPF, что при срабатывании команды следует искать элемент в ро-
дительской области действия фокуса:
<StackPanel FocusManager.IsFocusScope="True">
<Button Command="Cut">Cut</Button>
<Button Command="Copy">Copy</Button>
<Button Command="Paste">Paste</Button>
</StackPanel>