I have a screen in my app where the user needs to view, edit, and input a relatively large amount of text.
I started out with a regular TextBox with AcceptsReturn=True and TextWrapping=Wrap. This works fine until the text becomes too large for the screen, at which point the text input cursor will scroll itself into view automatically as you type, but there's no way for the user to scroll back to the top unless they have a device with a keyboard that has arrow keys. I tried setting VerticalScrollBarVisibility=Visible but it doesn't appear to have any effect.
Next I tried wrapping the TextBox inside a ScrollViewer like this
<ScrollViewer>
<TextBox AcceptsReturn="True" TextWrapping="Wrap" />
</ScrollViewer>
This enables the user to scroll the text by hand, but the input cursor no longer scrolls itself into view automatically so inputting text becomes very difficult. When you're typing near the bottom of the visible area and the text wraps to the next line you can no longer see the text as it is being entered unless you manually scroll the view down.
Is there any way to get the regular behavior while typing, but get the ScrollViewer behavior while dragging? Neither solution is adequate by itself. Is there another way to approach the problem?