Метки

38

Простейшим элементом управления содержимым является 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 напрямую: вместо него приходится использовать неуклюжую комбинацию &amp;.

Обычно буквы клавиш быстрого доступа скрыты до тех пор, пока пользователь не нажмет <Alt> — тогда они отмечаются подчеркиванием. Однако это поведение зависит от настроек системы.

Если нужно лишь вывести содержимое без поддержки мнемонических команд, можно воспользоваться более облегченным элементом TextBlock. В отличие от элемента Label, TextBlock поддерживает перенос текста с помощью свойства TextWrapping.

Пройди тесты
Лучший чат для C# программистов