2011-02-25 22 views
15

En toda mi aplicación, tengo algunos guiones bajos (_) que no se muestran.Underscores no se muestra en WPF

Se debe al accesorio. ¿Pero cómo puedo desactivarlo? Aplicación de ancho No tengo en las etiquetas, cuadros de texto, ...

Gracias

+0

posible duplicado de [Desactivar la tecla del acelerador de etiquetas WPF (falta el subrayado del texto)] (http://stackoverflow.com/questions/40733/disable-wpf-label-accelerator-key-text-underscore-is-missing) – Carl

Respuesta

16

Para desactivar pone de relieve a nivel mundial para todas las etiquetas se puede reemplazar la plantilla predeterminada para las etiquetas de la siguiente manera:

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

Se diferencia de la plantilla por defecto en esta línea: RecognizesAccessKey="False".

Ponga este estilo en los recursos globales de su aplicación (App.xaml) y sus etiquetas ya no reconocerán los guiones bajos.

+0

¡Hola! ¡Gracias por su respuesta! Lo intentaré hoy, pero parece ser lo que necesito. ¿Es obligatorio vincular valores predeterminados? – J4N

+0

@ J4N - No necesita enlazar nada. Simplemente coloque este estilo en los recursos globales (en App.xaml) y se aplicará automáticamente a todas las etiquetas en su aplicación (a menos que otro estilo se especifique explícitamente en una etiqueta). –

+0

Disculpe, estaba hablando sobre este tipo de cosas: Padding = "{TemplateBinding Padding}" ¿Son obligatorios? Porque si tengo que hacer eso para todos los componentes que se supone que muestran algo, me gustaría reducir la cantidad de código – J4N

3

¿Ha intentado duplicar los guiones?

+0

¿Por qué está sucediendo que el doble guión bajo muestra no solo? – Ahmad

+1

@Ahmad porque el guión bajo indica que la siguiente letra es la tecla de acceso (utilizada con Alt; por ejemplo, el texto "_Ahmad" permitiría acceder a ella mediante Alt + A, como se indica mediante el subrayado). Entonces, dos guiones bajos son la secuencia de escape. – SlapY

9

Uso dos subrayados:

name = "__something"; 
+0

No puedo usar esto, estos valores provienen de la base de datos, y simplemente no puedo permitirme hacer esto en todos los campos. Y la mayoría de mis campos están directamente limitados en el valor de mis objetos. – J4N

+3

Use un convertidor de valor para reemplazar el guion bajo con doble guion bajo. Fácil. – Aliostad

6

Una solución fácil es no usar <Etiqueta>. <TextBox> no ensucia con guiones bajos.

+6

o TextBlock si no quiere tratar con algo editable.Enlace a 'Texto' en lugar de' Contenido'. –

Cuestiones relacionadas