2011-07-19 14 views
7

Estoy tratando de centrar verticalmente el contenido de un TextBox con la propiedad VerticalContentAlignment pero parece que no tiene ningún efecto. El texto se mantiene en la parte superior. ¿Puede alguien decirme cómo hacer esto?Silverlight: TextBox VerticalContentAlignment = "Center"

Aquí está mi código:

<TextBox Grid.Column="1" 
    Grid.Row="0" 
    Width="200" 
    Height="28" 
    VerticalAlignment="Center" 
    VerticalContentAlignment="Center" /> 
+0

Consulte http://stackoverflow.com/questions/1491649/text-vertical-alignment-in-wpf-textblock –

Respuesta

7

Es posible hacer que TextBox centre su texto verticalmente. Sin embargo, eso requiere que vuelva a aplicar su ControlTemplate.

Para hacer esto:

  1. copiar el estilo y la ControlTemplate del TextBox Styles and Templates page on MSDN a un elemento adecuado <UserControl.Resources>. (Esto es en realidad ControlTemplate para una información sobre herramientas de validación; ControlTemplate cambiaremos está dentro del estilo.)
  2. encontrar el elemento ScrollViewer dentro del estilo para el cuadro de texto, y añadir un alojamiento VerticalAlignment="Center" a ella.

Como alternativa, puede añadir la propiedad

VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 

a la ScrollViewer. Esto debería permitirle establecer la alineación vertical de los contenidos de sus cuadros de texto utilizando la propiedad VerticalContentAlignment.

Puede seguir el mismo enfoque si desea cambiar también la alineación horizontal del contenido de un TextBox.

-1

El código XAML es correcta, el siguiente debe ser suficiente:

<TextBlock Text="Centered Text" VerticalAlignment="Center" /> 

¿Se puede probar que el código fuera de la parrilla?

Compruebe los atributos que definió en su Cuadrícula, esto probablemente provocará el comportamiento que tiene. ¿Puedes publicar el código XAML completo?

+0

Como su código produce un TextBlock que tiene exactamente el tamaño del texto que contiene, el texto estará centrado. Sin embargo, si uso un _TextBox_ y establezco la altura en 30, el problema sigue ahí. –