2012-03-13 12 views
16

Mi Label.Content en WPF no muestra la primera aparición del carácter "_". ¿Por qué?La etiqueta no muestra el carácter "_"

<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

Cuando se establece Label.Content ="L__abel":

enter image description here

No hay ningún código adicional en el proyecto.

+8

@ H.B.- No es un comentario útil. Si no se puede preguntar sobre cualquier cosa que esté dentro de la documentación de MSDN, habría muy pocas preguntas sobre el desbordamiento de la pila. Si no tiene una respuesta, no publique, así de simple. – Danielson

+7

No estoy de acuerdo. No leo toda la documentación, ya que es muy voluminosa y no es relevante. Puedo encontrar la información relevante que necesito mirando el desbordamiento de la pila. Me alegro de que esta publicación esté aquí y me alegro de que la respuesta también lo sea. – Danielson

Respuesta

28

_ se utiliza en WPF para señalar una clave de acceso, es decir, una tecla se puede pulsar con Alt para dar enfoque o invocar un elemento de interfaz de usuario. Esto es similar a cómo se usa & en Windows API y Windows Forms. Dado que las etiquetas están destinadas a ser utilizadas como la etiqueta de otro control (para describir un cuadro de texto, por ejemplo), esto es bastante esperado. Debería ver el a en su ejemplo subrayado cuando presiona Alt.

Desde el documentation:

Para establecer la clave de acceso, añadir un guión antes de que el carácter que debe ser la clave de acceso. Si su contenido tiene varios caracteres de subrayado, solo el primero se convierte en una clave de acceso; los otros caracteres de subrayado aparecen como texto normal. Si el guión bajo que desea convertir a la clave de acceso no es el primer guión bajo, use dos guiones bajos consecutivos para cualquier guión bajo que preceda al que desea convertir. Por ejemplo, el siguiente código contiene una clave de acceso y muestra como _HelloWorld:

<Label>__Hello_World</Label> 

Debido a que el subrayado que precede H es un doble, los registros tecla W como la clave de acceso.

supongo que si no necesita ni desea que las características Label permita, se pueden usar una TextBlock.

+2

Entonces, ¿cómo mostrar dinámicamente el contenido que contiene "_"? – HelloWorld

+0

No lo coloque en un control que tenga otros usos además de solo mostrar texto. O escape de metacaracteres. – Joey

3

_ Debido a que la carta se utiliza para los accesos directos (es un acelerador)

7

Joey es correcto! Utilice

<TextBlock>L_abel</TextBlock> 

y se mostrarán todos sus guiones!

1

En WPF hay un atributo llamado RecognizesAccessKey, intente cambiarlo a falso. Si usa RadioButton, tenga en cuenta que también hay etiquetas detrás, y en la plantilla RadioButton para desactivar el reconocimiento de teclas de acceso, debe establecer RecognizesAccessKey="False" en la plantilla ContentPresenter. Entonces esto está deshabilitado, o la etiqueta se reemplaza por otra cosa que no recuerdo ahora.

0

El método más fácil de solucionarlo sería:

Cambio

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

a

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