368 votes

Automatique de la barre de défilement verticale dans WPF TextBlock?

J'ai un TextBlock en WPF. - Je écrire de nombreuses lignes, dépassant de loin sa hauteur verticale. Je m'attendais à une barre de défilement verticale apparaissent automatiquement lorsque cela se produit, mais il n'a pas. J'ai essayé de regarder la barre de défilement de la propriété dans le volet Propriétés, mais ne pouvait pas en trouver un.

Comment puis-je faire une barre de défilement verticale créé automatiquement pour ma TextBlock une fois son contenu dépasse sa hauteur?

Précisions: je préfère le faire à partir de la designer, et non directement par écrit à l'XAML.

609voto

Drew Noakes Points 69288

L'envelopper dans un rouleau de la visionneuse:

<ScrollViewer>
    <TextBlock />
</ScrollViewer>

NOTEZ cette réponse s'applique à un TextBlock (lecture seule) de l'élément de texte), comme demandé dans la question d'origine.

Si vous souhaitez afficher les barres de défilement en TextBox (modifiable élément de texte), puis utiliser l' ScrollViewer des propriétés attachées:

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

Les valeurs valides pour ces deux propriétés sont Disabled, Auto, Hidden et Visible.

111voto

vince Points 651

pouvez utiliser la suivante aujourd'hui:

<TextBox Name="myTextBox" 
         ScrollViewer.HorizontalScrollBarVisibility="Auto"
         ScrollViewer.VerticalScrollBarVisibility="Auto"
         ScrollViewer.CanContentScroll="True">SOME TEXT
</TextBox>

23voto

varagrawal Points 530

Quelque chose de mieux serait:

<Grid Width="Your-specified-value" >
    <ScrollViewer>
         <TextBlock Width="Auto" TextWrapping="Wrap" />
    </ScrollViewer>
</Grid>

Cela permet de s'assurer que le texte dans votre textblock ne déborde pas et se chevauchent les éléments ci-dessous le textblock comme cela peut être le cas si vous n'utilisez pas la grille. Ce qui m'est arrivé lorsque j'ai essayé d'autres solutions, même si le textblock était déjà dans une grille avec d'autres éléments. Gardez à l'esprit que la largeur de la textblock devrait être Automatique et vous devez spécifier dans l'élément de Grille. Je l'ai fait dans mon code et il fonctionne à merveille. HTH.

9voto

Sandeep Points 1
<ScrollViewer Height="239" VerticalScrollBarVisibility="Auto">
                <TextBox x:Name="newDescTextBox" AcceptsReturn="True" TextWrapping="Wrap" LineHeight="10"/>
            </ScrollViewer>

c'est la façon d'utiliser le défilement de la zone de texte dans le code xaml et l'utiliser comme un textarea.

2voto

user3265146 Points 11

Vous pouvez utiliser

ScrollViewer.HorizontalScrollBarVisibility="Visible"
ScrollViewer.VerticalScrollBarVisibility="Visible"

Ces sont attachés à la propriété de wpf. Pour plus d'informations

http://wpfbugs.blogspot.in/2014/02/wpf-layout-controls-scrollviewer.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X