2012-03-13 158 views
16

我的Label.Content在WPF中不显示“_”字符的第一次出现。为什么?标签不显示“_”字符

<Window x:Class="WpfApplication3.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="148" Width="211"> 
    <Grid> 
     <Label Content="L_abel" Height="28" HorizontalAlignment="Left" Margin="37,31,0,0" Name="label1" VerticalAlignment="Top" /> 
    </Grid> 
</Window> 

enter image description here

当设定Label.Content ="L__abel"

enter image description here

有一个在项目中没有额外的代码。

+8

@ H.B。 - 不是一个有用的评论。如果不能询问MSDN文档中的任何内容,则关于堆栈溢出的问题很少。如果你没有答案,不要发布,那很简单。 – Danielson 2016-08-29 21:11:08

+7

我不同意。我没有阅读整个文档,因为它非常庞大而且并非全部相关。通过查看堆栈溢出,我可以找到所需的相关信息。我很高兴这篇文章在这里,很高兴答案也是如此。 – Danielson 2016-08-30 15:05:48

回答

28

_在WPF中用于发信号通知密钥,即您可以用Alt按下的密钥给出焦点或调用UI元素。这与在Windows API和Windows窗体中使用&类似。由于标签旨在用作另一个控件的标签(例如,描述文本框),这是非常期待的。当您按Alt时,您应看到示例中的a带下划线。

documentation

要设置快捷键,这应该是快捷键的字符前加下划线。如果您的内容具有多个下划线字符,则只有第一个被转换为访问键;其他下划线显示为普通文本。如果要转换为访问密钥的下划线不是第一个下划线,请为要转换的下划线之前的任何下划线使用两个连续的下划线。例如,下面的代码包含一个访问键和显示为_HelloWorld:

<Label>__Hello_World</Label> 

因为先于小时下划线是双,W键寄存器作为访问密钥。

我想如果你既不需要也不想要Label提供的功能,你可以使用TextBlock

+2

那么,如何动态显示包含“_”的内容呢? – HelloWorld 2012-03-13 13:17:23

+0

除了仅显示文本之外,请勿将其放在具有其他用途的控件中。或者转义元字符。 – Joey 2012-03-13 13:19:58

3

因为_字母用于快捷方式(是加速器)

7

乔伊是对的!使用

<TextBlock>L_abel</TextBlock> 

所有的下划线都会显示!

1

在WPF中有一个属性,称为RecognizesAccessKey,尝试将其更改为false。如果您使用RadioButton,请注意后面还有标签,并且在RadioButton模板中禁用访问密钥识别,则必须在模板ContentPresenter上设置RecognizesAccessKey="False"。然后这是禁用的,或者标签被替换为我现在不记得的其他东西。

0

的最简单的方法来解决这将是:

变化

<Label Content="L_abel" Height="28" HorizontalAlignment="Left" Margin="37,31,0,0" Name="label1" VerticalAlignment="Top" /> 

<Label Height="28" HorizontalAlignment="Left" Margin="37,31,0,0" Name="label1" VerticalAlignment="Top"> 
<TextBlock Text="L_abel"/> 
</Label>