如何在 WPF 中获取 richtextbox 最后一个词是否为 BringIntoView(显示)?

How to get whether richtextbox last word is BringIntoView(shown) or not in WPF?

我在 wpf 工作,我有一个 richtextbox,里面有一些 contents.if 内容超出了 richtextbox 我想隐藏底部 border.if richtextbox 中的内容我想显示底部 border.Now 我正在使用下面的代码将超出的内容带到 richtextbox 中查看。

 FrameworkContentElement fce = (startPos.Parent as FrameworkContentElement);
            if (fce != null)
            {
                fce.BringIntoView();
            }

但是我想显示下边框,一旦那个最后一个字显示出来richtextbox.How能实现吗?

注意:我已经知道如何显示底部边框dynamically.but我想知道最后一个字是否显示在richtextbox中?

问候 阿俊

我可以为您提供一种方法来检查字符的左上角是否可见。 使用以下内容创建 class 库 Tools

public class ToolsRtb
{
    public static bool PositionVisibleIs(RichTextBox rtb, TextPointer pos)
    {
        // Rectangle around the character to check
        Rect r = pos.GetCharacterRect(LogicalDirection.Forward);

        // Upper left corner of the rectangle ...
        Point upperLeftCorner = r.Location;

        HitTestResult result = VisualTreeHelper.HitTest(rtb, upperLeftCorner);

        // ... is visible?
        if (result != null)
            return true;
        else
            return false;
    }   
}

请注意,PositionVisibleIs(...) 是一个静态方法,并不专用于特定对象。 在包含您的 RichTextBox 的 window 的代码隐藏文件中,使用如下方法:

// Is the last character of the current document visible?
if (ToolsRtb.PositionVisibleIs(rtb, rtb.Document.ContentEnd) == true)
{
    ...
}

希望对您有所帮助。