0

我在 wpf 工作,我有一个包含一些内容的 Richtextbox。如果内容超出了richtextbox,我想隐藏底部边框。如果richtextbox 中的内容我想显示底部边框。现在我正在使用下面的代码来将超出的内容带到富文本框中查看。

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

但是我想显示底部边框,一旦该richtextbox中显示最后一个单词。如何实现这一点?

注意:我已经知道如何动态显示底部边框。但我想知道最后一个单词是否显示在 Richtextbox 中?

问候阿琼

4

1 回答 1

1

我可以为您提供一种方法来检查字符的左上角是否可见。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使用的窗口的代码隐藏文件中,使用如下方法:

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

希望这可以帮助。

于 2016-01-09T08:45:30.123 回答