¿Barra de desplazamiento vertical automática en WPF TextBlock?
Tengo un TextBlock
en WPF. Le escribo muchas líneas, superando con creces su altura vertical. Esperaba que apareciera automáticamente una barra de desplazamiento vertical cuando eso sucediera, pero no fue así. Intenté buscar una propiedad de barra de desplazamiento en el panel Propiedades, pero no pude encontrarla.
¿Cómo puedo hacer que la barra de desplazamiento vertical se cree automáticamente TextBlock
una vez que su contenido exceda su altura?
Aclaración: Prefiero hacerlo desde el diseñador y no escribiendo directamente al XAML.
Envuélvalo en un visor de desplazamiento:
<ScrollViewer>
<TextBlock />
</ScrollViewer>
NOTA: esta respuesta se aplica a TextBlock
(un elemento de texto de solo lectura) como se solicita en la pregunta original.
Si desea mostrar barras de desplazamiento en TextBox
(un elemento de texto editable), utilice las ScrollViewer
propiedades adjuntas:
<TextBox ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ScrollViewer.VerticalScrollBarVisibility="Auto" />
Los valores válidos para estas dos propiedades son Disabled
, Auto
y Hidden
.Visible
Puedes usar lo siguiente ahora:
<TextBox Name="myTextBox"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.CanContentScroll="True">SOME TEXT
</TextBox>
Algo mejor sería:
<Grid Width="Your-specified-value" >
<ScrollViewer>
<TextBlock Width="Auto" TextWrapping="Wrap" />
</ScrollViewer>
</Grid>
Esto asegura que el texto en su bloque de texto no se desborde ni se superponga a los elementos debajo del bloque de texto, como puede ser el caso si no usa la cuadrícula. Eso me pasó cuando probé otras soluciones a pesar de que el bloque de texto ya estaba en una cuadrícula con otros elementos. Tenga en cuenta que el ancho del bloque de texto debe ser Automático y debe especificar el ancho deseado en el elemento Cuadrícula. Hice esto en mi código y funciona maravillosamente. HTH.
<ScrollViewer MaxHeight="50"
Width="Auto"
HorizontalScrollBarVisibility="Disabled"
VerticalScrollBarVisibility="Auto">
<TextBlock Text="{Binding Path=}"
Style="{StaticResource TextStyle_Data}"
TextWrapping="Wrap" />
</ScrollViewer>
Estoy haciendo esto de otra manera al poner MaxHeight en ScrollViewer.
Simplemente ajuste MaxHeight para mostrar más o menos líneas de texto. Fácil.