Cannot see _ (underscore) in WPF content

2019-01-12 08:45发布

A very simple question:

Why I cant see _ (underscore) in WPF content?

For instance the content of

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

is shown as "testt" (with the underscore not shown).

标签: wpf xaml
4条回答
放我归山
2楼-- · 2019-01-12 08:55

This is because Label supports defining a mnemonic based on its content, which is done by prefixing the mnemonic with an underscore (the same thing that happens in Windows Forms with &).

Use a double underscore if you want a literal one to appear:

<Label Content="test__t" Name="label2"  />
查看更多
干净又极端
3楼-- · 2019-01-12 09:07

I know im late to the party but I believe that if you don't have the Label associated to a TextBox than you should use a TextBlock instead.

Changing your control to a TextBlock solves this issue since only Label has the mnemonic support

查看更多
一夜七次
4楼-- · 2019-01-12 09:16

This style solves your problem:

<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>

查看更多
够拽才男人
5楼-- · 2019-01-12 09:17

Labels support mnemonics (i.e. you can use ctrl+(key) to give them focus). You define the mnemonic key using an underscore.

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

If you want to see underscores, replace single underscores with double underscores.

查看更多
登录 后发表回答