我的应用程序中有一个位于 Grid 中的 WPF RichTextBox。它每两秒更新一次,因为它显示日志(尽管有时根据负载的不同,一分钟内没有日志)。
网格并不总是可见,因为它位于自己的选项卡中。如果用户在另一个选项卡上,则记录器不可见。
我的问题是每次添加新段落时,我都希望 RichTextBox 滚动到末尾。这看起来很简单,因为 RichTextBox 控件上有一个 'ScrollToEnd' 方法,所以每次将文本添加到控件时我都会调用该方法。
问题是该方法仅在控件可见时才有效,如果用户在另一个选项卡上,则 RichTextBox 不会滚动到末尾,并且当您使用记录器单击选项卡并在几秒钟后看起来很奇怪或当它应该已经在底部时,它会滚动到底部。
有没有办法解决这个烦人的控件“功能”?我希望 RichTextBox 始终位于底部,除非用户手动控制滚动条。
谢谢!
最佳答案
默认情况下,TabControl 实际上不会更改其内容可见性,它会在您更改选项卡时将它们从 View 中完全删除,然后在您导航回上一个选项卡时“重新附加”它们。
这就是 Visibility 更改不会被触发的原因。相反,您应该处理 Loaded 事件,该事件应该在重新渲染 View 之前立即触发。
关于wpf - RichTextBox 在不可见时滚动到结束不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30417900/