Подтвердить что ты не робот

Не удается увидеть _ (подчеркивание) в содержимом WPF

Очень простой вопрос:

Почему я не вижу _ (подчеркивание) в содержимом WPF?

Например, содержимое

<Label Content="test_t" Name="label2"  />

отображается как "testt" (при этом подчеркивание не показано).

4b9b3361

Ответ 1

Ярлыки поддерживают мнемонику (т.е. вы можете использовать ctrl + (key), чтобы дать им фокус). Вы определяете мнемонический ключ с помощью подчеркивания.

http://www.charlespetzold.com/blog/2006/01/061004.html

Если вы хотите видеть символы подчеркивания, замените отдельные подчеркивания двойными символами подчеркивания.

Ответ 2

Это связано с тем, что Label поддерживает определение мнемоники на основе ее содержимого, что делается путем префикса мнемоники с подчеркиванием (то же самое происходит в Windows Forms с &).

Используйте двойной знак подчеркивания, если вы хотите, чтобы буквальный отображался:

<Label Content="test__t" Name="label2"  />

Ответ 3

Я знаю, что опаздываю на вечеринку, но я считаю, что если у вас нет метки, связанной с TextBox, вместо этого вы должны использовать TextBlock.

Изменение контроля над TextBlock решает эту проблему, поскольку только ярлык имеет мнемоническую поддержку

Ответ 4

Этот стиль решает вашу проблему:

<Style x:Key="{x:Type Label}"
   TargetType="{x:Type Label}">
<Setter Property="Template">
    <Setter.Value>
        <ControlTemplate TargetType="{x:Type Label}">
            <Border Background="{TemplateBinding Background}"
                    BorderThickness="{TemplateBinding BorderThickness}"
                    BorderBrush="{TemplateBinding BorderBrush}"
                    Padding="{TemplateBinding Padding}"
                    SnapsToDevicePixels="true">
                <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                  VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                  RecognizesAccessKey="False"
                                  SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
            </Border>
            <ControlTemplate.Triggers>
                <Trigger Property="IsEnabled"
                         Value="false">
                    <Setter Property="Foreground"
                            Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}" />
                </Trigger>
            </ControlTemplate.Triggers>
        </ControlTemplate>
    </Setter.Value>
</Setter>