¿Barra de desplazamiento vertical automática en WPF TextBlock?

Resuelto Bab Yogoo asked hace 15 años • 10 respuestas

Tengo un TextBlocken 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 TextBlockuna vez que su contenido exceda su altura?

Aclaración: Prefiero hacerlo desde el diseñador y no escribiendo directamente al XAML.

Bab Yogoo avatar Jul 28 '09 14:07 Bab Yogoo
Aceptado

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 ScrollViewerpropiedades adjuntas:

<TextBox ScrollViewer.HorizontalScrollBarVisibility="Disabled"
         ScrollViewer.VerticalScrollBarVisibility="Auto" />

Los valores válidos para estas dos propiedades son Disabled, Autoy Hidden.Visible

Drew Noakes avatar Jul 28 '2009 07:07 Drew Noakes

Puedes usar lo siguiente ahora:

<TextBox Name="myTextBox" 
         ScrollViewer.HorizontalScrollBarVisibility="Auto"
         ScrollViewer.VerticalScrollBarVisibility="Auto"
         ScrollViewer.CanContentScroll="True">SOME TEXT
</TextBox>
vince avatar Dec 30 '2009 21:12 vince

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.

varagrawal avatar Jun 13 '2012 16:06 varagrawal
<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.

Tony Wu avatar Nov 16 '2016 07:11 Tony Wu