wpf – 带自动垂直滚动的多行文本框

有很多类似的问题,互联网,在SO包括,但提出的解决方案不工作在我的情况。
场景:在xaml中有一个日志文本框

 <TextBox Name="Status" 
                     Margin="5" 
                     Grid.Column="1" 
                     Grid.Row="5" 
                     HorizontalAlignment="Left" 
                     VerticalAlignment="Top" 
                     Width="600" 
                     Height="310"/>

有代码隐藏的方法做一些工作,并添加一些多线(可能是问题?)消息到这个文本框:

private static void DoSomeThings(TextBox textBox)
{
   // do work
   textBox.AppendText("Work finished\r\n"); // better way than Text += according to msdn
   // do more
   textbox.AppendText("One more message\r\n");
   ...
}
private static void DoSomething2(TextBox textBox)
{
   // same as first method
}

在所有操作发生后,需要滚动到文本框的底部。尝试ScrollToEnd(),ScrollToLine,将文本框包装到ScrollViewer,Selection和Caret解决方法中,将ScrollToEnd附加到TextChanged。没有这些工作,在执行行溢出文本框高度后仍然需要滚动到手动。对不起重复的问题,我想我错过了一些小问题,可以迅速解决的人有一个新的视角的问题。提前致谢。

根据这个问题:TextBox.ScrollToEnd doesn’t work when the TextBox is in a non-active tab

您必须聚焦文本框,更新插入符位置,然后滚动到结束:

Status.Focus();
Status.CaretIndex = Status.Text.Length;
Status.ScrollToEnd();

编辑

示例TextBox:

<TextBox TextWrapping="Wrap" VerticalScrollBarVisibility="Auto" 
         AcceptsReturn="True" Name="textBox"/>
http://stackoverflow.com/questions/8938775/multiline-textbox-with-automatic-vertical-scroll

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:wpf – 带自动垂直滚动的多行文本框