wpf - RichTextBox 在不可见时滚动到结束不起作用

标签 wpf wpf-controls scrollbar richtextbox vertical-scrolling

我的应用程序中有一个位于 Grid 中的 WPF RichTextBox。它每两秒更新一次,因为它显示日志(尽管有时根据负载的不同,一分钟内没有日志)。

网格并不总是可见,因为它位于自己的选项卡中。如果用户在另一个选项卡上,则记录器不可见。

我的问题是每次添加新段落时,我都希望 RichTextBox 滚动到末尾。这看起来很简单,因为 RichTextBox 控件上有一个 'ScrollToEnd' 方法,所以每次将文本添加到控件时我都会调用该方法。

问题是该方法仅在控件可见时才有效,如果用户在另一个选项卡上,则 RichTextBox 不会滚动到末尾,并且当您使用记录器单击选项卡并在几秒钟后看起来很奇怪或当它应该已经在底部时,它会滚动到底部。

有没有办法解决这个烦人的控件“功能”?我希望 RichTextBox 始终位于底部,除非用户手动控制滚动条。

谢谢!

最佳答案

默认情况下,TabControl 实际上不会更改其内容可见性,它会在您更改选项卡时将它们从 View 中完全删除,然后在您导航回上一个选项卡时“重新附加”它们。

这就是 Visibility 更改不会被触发的原因。相反,您应该处理 Loaded 事件,该事件应该在重新渲染 View 之前立即触发。

关于wpf - RichTextBox 在不可见时滚动到结束不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30417900/

相关文章:

c# - WPF 是否有 "static box"控件?

wpf - 我可以在 WPF 中明确显示鼠标单击事件的工具提示吗?

css - 在大于浏览器窗口的 div 内滚动

html - 滚动弹出框而不滚动其后面的网页

wpf - 从 WPF 迁移到 Silverlight : What are the Key Differences?

wpf - 如何刷新多重绑定(bind)

wpf - WPF自定义套索选择器?

c# - 当子窗口打开时使父窗口保持事件状态

c# - Windows 7 系统默认控件颜色列表

user-interface - 凉爽的用户界面替代品和滚动条的改进