【问题标题】:WPF RichTextBox scrolling does not work if window is minimized如果窗口最小化,WPF RichTextBox 滚动不起作用
【发布时间】:2014-12-15 22:37:14
【问题描述】:

我需要以下滚动行为,但这仅适用于未最小化窗口的情况。即使窗口最小化,是否有可行的解决方案?

c#

private void richTextBox_TextChanged(object sender, TextChangedEventArgs e)
{
    if (richTextBox.VerticalOffset + richTextBox.ViewportHeight >= richTextBox.ExtentHeight)
    {
        richTextBox.ScrollToEnd();
    }
}

xaml

<Grid>
    <RichTextBox Name="richTextBox" IsReadOnly="True" VerticalScrollBarVisibility="Auto" TextChanged="richTextBox_TextChanged">
        <RichTextBox.Resources>
            <Style TargetType="{x:Type Paragraph}">
                <Setter Property="Margin" Value="0"/>
            </Style>
        </RichTextBox.Resources>
    </RichTextBox>
</Grid>

【问题讨论】:

  • 如果窗口最小化了,不知道你是怎么发现问题的??
  • 滚动条位于底部,我将窗口最小化。后来,当某些内容被附加到 RichTextBox 时,滚动条不再位于底部。但如果我不最小化窗口,它就可以工作。
  • 当窗口最小化时,ViewportHeight 为 0.0。

标签: c# wpf xaml scroll richtextbox


【解决方案1】:

在窗口的StateChanged 事件中也调用ScrollToEnd。所以当窗口从最小化状态返回时就完成了。

【讨论】:

  • 如果窗口从最小化状态恢复,滚动条总是在底部。
  • 我认为这正是你的目标:让它滚动到最后。或者底部的滚动条是什么意思
  • 如果RichTextBox添加了新文本,并且在添加文本之前滚动条在末尾,则在添加新文本后调用ScrollToEnd(),否则不调用ScrollToEnd()调用。
  • 复杂 :-) 您可以在附加文本时设置一个标志。然后你可以在从最小化状态返回后检查这个标志。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-20
  • 2011-02-19
  • 2012-02-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多