¿Cómo asigno la alineación central vertical al texto dentro de un TextBlock? Encontré la propiedad TextAlignment pero es para la alineación horizontal del texto. ¿Cómo lo hago para la alineación vertical del texto?
wpf
vertical-alignment
textblock
Hormiga
fuente
fuente
TextAlignment
solo afecta la alineación horizontal, no la alineación vertical (como se refiere a la pregunta).Respuestas:
Un bloque de texto en sí no puede hacer una alineación vertical
La mejor manera de hacer esto que he encontrado es colocar el bloque de texto dentro de un borde, para que el borde se alinee por usted.
Nota: Esto es funcionalmente equivalente al uso de una cuadrícula, solo depende de cómo desee que los controles encajen con el resto de su diseño en cuanto a cuál es más adecuado
fuente
Si bien Orion Edwards Answer funciona para cualquier situación, puede ser difícil agregar el borde y establecer las propiedades del borde cada vez que desee hacer esto. Otra forma rápida es establecer el relleno del bloque de texto:
fuente
TextBlock no admite la alineación vertical de texto.
Evito esto envolviendo el bloque de texto con una cuadrícula y configurando HorizontalAlignment = "Stretch" y VerticalAlignment = "Center".
Me gusta esto:
fuente
TextBlock
enEllipse
el interior de unaGrid
. No es necesario vincular mis propiedades de ancho y alto ni hacer nada complicado.Puede usar la etiqueta en lugar del bloque de texto.
fuente
Si puede prescindir del ajuste de texto , creo que reemplazar TextBlock con una etiqueta es la forma más sucinta de hacerlo. De lo contrario, siga una de las otras respuestas válidas.
fuente
TextBlock
no admite la alineación vertical de su contenido. Si debes usarTextBlock
alinearlo con respecto a su padre.Sin embargo, si puede usar
Label
en su lugar (y tienen una funcionalidad muy similar), puede colocar el contenido del texto:El
Label
se estirará para llenar sus límites de forma predeterminada, lo que significa que el texto de la etiqueta estará centrado.fuente
Para mí,
VerticalAlignment="Center"
soluciona este problema.Esto podría deberse a que
TextBlock
está envuelto en una cuadrícula, pero también lo está prácticamente todo en wpf.fuente
Descubrí que modificar el estilo del cuadro de texto (es decir:)
controltemplate
y luego modificar laPART_ContentHost
alineación vertical al Centro hará el trucofuente
Solo por risas, dale un giro a este XAML. No es perfecto, ya que no es una "alineación", pero le permite ajustar la alineación del texto dentro de un párrafo.
fuente
Si puede pasar por alto la altura de TextBlock, es mejor que use esto:
fuente
En mi caso, hice esto para que la
TextBlock
pantalla fuera más agradable.El truco para alejar el texto del fondo es establecer
fuente
Puedes ver la publicación de mi blog. Puede establecer la altura personalizada de Textblock desde el código subyacente. Para configurar la altura personalizada, debe establecerla dentro de un borde o panel de pila
http://ciintelligence.blogspot.com/2011/02/wpf-textblock-vertical-alignment-with.html
fuente
Descubrí que tenía que hacerlo un poco diferente. Mi problema era que si cambiaba el tamaño de fuente, el texto se movería hacia arriba en el cuadro de texto en lugar de permanecer en la parte inferior con el resto de cuadros de texto en la línea. Al cambiar la alineación vertical de arriba a abajo, pude cambiar la fuente mediante programación del tamaño 20 al tamaño 14 y viceversa, manteniendo la gravedad del texto en la parte inferior y manteniendo las cosas ordenadas. Así es cómo:
fuente
Para ampliar la respuesta proporcionada por @Orion Edwards, así es como lo haría completamente desde el código subyacente (sin estilos establecidos). Básicamente, cree una clase personalizada que herede de Border que tenga su elemento secundario establecido en un cuadro de texto. El siguiente ejemplo supone que solo desea una sola línea y que el borde es hijo de un lienzo. También supone que necesitaría ajustar la propiedad MaxLength de TextBox según el ancho del borde. El siguiente ejemplo también establece el cursor del borde para imitar un cuadro de texto estableciéndolo en el tipo 'IBeam'. Se establece un margen de '3' para que TextBox no esté absolutamente alineado a la izquierda del borde.
Clase:
fuente
Creo que es mejor usar una Etiqueta (o TextBlock) en una Etiqueta, no puede adjuntar un evento de mouse directamente en el control de borde, finalmente se adjunta en TextBlock, esta es mi recomendación:
fuente
Creo que es aconsejable usar un cuadro de texto sin borde ni fondo como una forma fácil y rápida de llegar al bloque de texto alineado al centro
fuente
fuente
TextBlock
, noTextBox
. -1