Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf TextBox.ScrollToEnd不';当文本框处于非活动选项卡中时不工作_Wpf_Textbox_Scroll - Fatal编程技术网

Wpf TextBox.ScrollToEnd不';当文本框处于非活动选项卡中时不工作

Wpf TextBox.ScrollToEnd不';当文本框处于非活动选项卡中时不工作,wpf,textbox,scroll,Wpf,Textbox,Scroll,我们的应用程序启动几个后台进程,并将它们的输出放入文本框中——每个文本框都位于TabControl中一个单独的TabItem中。我希望文本框自动滚动以显示最后一个输出行,因此在将输出/错误行添加到文本框的数据处理函数中,我还调用TextBox.ScrollToEnd() 这对于活动选项卡中的文本框非常有用,但是当我切换到另一个选项卡时,我看到它没有向下滚动到最后 这是一个已知的问题吗?有办法修复吗?看起来像个bug。。。您应该在设置CaretIndex时报告: if (tb != null

我们的应用程序启动几个后台进程,并将它们的输出放入文本框中——每个文本框都位于TabControl中一个单独的TabItem中。我希望文本框自动滚动以显示最后一个输出行,因此在将输出/错误行添加到文本框的数据处理函数中,我还调用TextBox.ScrollToEnd()

这对于活动选项卡中的文本框非常有用,但是当我切换到另一个选项卡时,我看到它没有向下滚动到最后


这是一个已知的问题吗?有办法修复吗?

看起来像个bug。。。您应该在设置CaretIndex时报告:

   if (tb != null) 
   { 
       tb.AppendText(e.Data + Environment.NewLine); 
       tb.CaretIndex = tb.Text.Length;
       tb.ScrollToEnd(); 
   } 

除非文本框有focus:tb.focus(),否则这个解决方案对我不起作用。这个10年前的错误仍然存在。如果在此之后以编程方式将焦点移开,则它仍然无法执行此操作。以下是如何执行此操作的答案:
   if (tb != null) 
   { 
       tb.AppendText(e.Data + Environment.NewLine); 
       tb.CaretIndex = tb.Text.Length;
       tb.ScrollToEnd(); 
   }