Метки
38WPF --- Элементы управления WPF --- Метки
Простейшим элементом управления содержимым является Label — метка. Как и любой другой элемент управления содержимым, она принимает одиночную порцию содержимого, которая размещается внутри нее. Отличительной чертой элемента Label является его поддержка мнемонических команд — нажатий клавиш, которые передают фокус соответствующему элементу управления.
Для поддержки этой функции в элементе Label добавлено свойство Target. Чтобы задать это свойство, необходимо воспользоваться выражением привязки, которое указывает на другой элемент управления. Ниже показан необходимый для этого синтаксис:
<StackPanel Margin="5">
<Label Margin="0,0,0,5" Target="{Binding ElementName=txtA}">Login (нажмите _A):</Label>
<TextBox MinHeight="24" Name="txtA"></TextBox>
<Label Margin="0,5,0,5" Target="{Binding ElementName=txtB}">Password (нажмите _B):</Label>
<PasswordBox Name="txtB" MinHeight="24"></PasswordBox>
</StackPanel>
Символ подчеркивания в тексте метки указывает на клавишу быстрого доступа. (Если символ подчеркивания необходим в метке, нужно добавить два таких символа.) Все мнемонические команды работают при одновременном нажатии клавиши <Alt> и заданной клавиши быстрого доступа. Например, если в данном примере пользователь нажмет комбинацию <Alt+A>, то первая метка передаст фокус связанному с ней элементу управления — в данном случае txtА. Точно так же нажатие комбинации <Alt+B> приводит к передаче фокуса элементу txtB:
Если вам доводилось программировать с использованием Windows Forms, то вы, возможно, применяли для обозначения клавиши быстрого доступа символ амперсанда (&). В XAML для этой цели служит символ подчеркивания, поскольку символ амперсанда нельзя ввести в XML напрямую: вместо него приходится использовать неуклюжую комбинацию &.
Обычно буквы клавиш быстрого доступа скрыты до тех пор, пока пользователь не нажмет <Alt> — тогда они отмечаются подчеркиванием. Однако это поведение зависит от настроек системы.
Если нужно лишь вывести содержимое без поддержки мнемонических команд, можно воспользоваться более облегченным элементом TextBlock. В отличие от элемента Label, TextBlock поддерживает перенос текста с помощью свойства TextWrapping.