当我添加新行时,如何将RichTextBox滚动到末尾?

我有几个只读的RichTextBox用于记录输出。 因为它们是只读的,所以当文本更新时它们似乎不会自动滚动。 我可以使用TextChanged事件强制滚动结束,但是不是简单的方法在XAML中设置属性或其他东西,以便滚动像正常一样发生吗?

我搜索了你的问题并发现了这篇文章。 在“编写RichTextBox”一节中,作者描述了如何获得您期望的行为。

如果有任何用途,请检查并告诉我。


我试图重现你的问题,并想出了以下解决方案

      

后面的代码如下:

 using System.Windows; namespace CheckRichTextBox { ///  /// Interaction logic for MainWindow.xaml ///  public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void BtnAddClick(object sender, RoutedEventArgs e) { richTextBox1.AppendText("You had Clicked the button for adding text\n"); richTextBox1.ScrollToEnd(); } } } 

这解决了自动滚动的问题,请检查它,并告诉我它是否有任何帮助。

我使用Interactivity触发器和一个非常简单的操作解决了这个问题。

动作如下:

 public class ScrollToBottomAction : TriggerAction { protected override void Invoke(object parameter) { AssociatedObject.ScrollToEnd(); } } 

然后在我的XAML中我有这个:

        
 RichTextBox.AppendText("String") RichTextBox.ScrollToCaret() 

当我添加到RichTextBox.text时,ScrollToCaret()不起作用。

 RichTextBox.text = RichTextBox.text + "String" RichTextBox.ScrollToCaret()