C# 若窗口最小化,WPF RichTextBox滚动将不起作用

C# 若窗口最小化,WPF RichTextBox滚动将不起作用,c#,wpf,xaml,scroll,richtextbox,C#,Wpf,Xaml,Scroll,Richtextbox,我需要以下滚动行为,但这仅在窗口未最小化的情况下有效。即使窗口最小化,是否有可行的解决方案 c xaml 在窗口的StateChanged事件中也调用ScrollToEnd。因此,当窗口从最小化状态返回时就会执行此操作。如果窗口最小化,我想知道您是如何发现问题的??滚动条在底部,我将窗口最小化。后来,当RichTextBox中添加了一些内容时,滚动条不再位于底部。但是如果我不最小化窗口,它会工作。最小化窗口时,ViewportHeight为0.0。如果从最小化窗口恢复,则滚动条始终位于底部。我想

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

c

xaml


在窗口的StateChanged事件中也调用ScrollToEnd。因此,当窗口从最小化状态返回时就会执行此操作。

如果窗口最小化,我想知道您是如何发现问题的??滚动条在底部,我将窗口最小化。后来,当RichTextBox中添加了一些内容时,滚动条不再位于底部。但是如果我不最小化窗口,它会工作。最小化窗口时,ViewportHeight为0.0。如果从最小化窗口恢复,则滚动条始终位于底部。我想这正是你的目标:将其滚动到底。如果在RichTextBox中追加新文本,并且在追加文本之前滚动条位于末尾,则在追加新文本后应调用ScrollToEnd,否则不应调用ScrollToEnd。复杂:-追加文本时可以设置标志。然后,您可以在从最小化状态返回后检查此标志。
private void richTextBox_TextChanged(object sender, TextChangedEventArgs e)
{
    if (richTextBox.VerticalOffset + richTextBox.ViewportHeight >= richTextBox.ExtentHeight)
    {
        richTextBox.ScrollToEnd();
    }
}
<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>