How to get a WPF TextBlock to scroll where the Text property is set asynchronously?

MalcomTucker picture MalcomTucker · Feb 22, 2013 · Viewed 22.4k times · Source

I have a TextBlock, wrapped in a ScrollViewer, and the Text property of the TextBlock is set with the result of a Task. The scrollbars of the TextBlock do not adjust to the size of the text returned by the task.

Any ideas?

<Grid>
   <Grid.ColumnDefinitions>
      <ColumnDefinition Width="500"/>
   </Grid.ColumnDefinitions>

   <ScrollViewer VerticalScrollBarVisibility="Auto" 
                 Height="177" 
                 Width="500" 
                 HorizontalScrollBarVisibility="Disabled">
      <TextBlock Height="177" 
                Text="Extracted Xml" 
                Width="504" 
                HorizontalAlignment="Stretch" 
                TextWrapping="Wrap" />
   </ScrollViewer>
</Grid>

Answer

Nogard picture Nogard · Feb 22, 2013

ScrollViewer calculates it's scrollbars based on dimensions of child controls.

Thus, remove Height property from your TextBlock and ScrollBars should work as expected