【问题标题】:How can I get/set the paragraph line height in a paragraph in WPF RichTextBox?如何在 WPF RichTextBox 的段落中获取/设置段落行高?
【发布时间】:2020-04-29 15:49:31
【问题描述】:

我需要为当前插入符号位置获取/设置当前段落(特别是行高和行间距值)。

我可以这样设置字体系列:

public string SelectionFontFamily
{
    get => GetFormatting(Inline.FontFamilyProperty)?.ToString() ?? "";
    set => SetFormatting(Inline.FontFamilyProperty, value ?? "Times New Roman");
}
private void SetFormatting(DependencyProperty property, object value)
{
    var selection = Rtb.Selection;
    selection.ApplyPropertyValue(property, value);
}
private object GetFormatting(DependencyProperty property)
{
    var range = Rtb.Selection;
    object value = null;
    var pointer = range.Start;
    if (pointer is TextPointer)
    {
        var needsContinue = true;
        DependencyObject element = pointer.Parent as TextElement;
        while (needsContinue && (element is Inline || element is Paragraph || element is TextBlock))
        {
            value = element.GetValue(property);
            needsContinue = ((value is IEnumerable seq)) ? seq.Cast<object>().Count() == 0 : value == null;
            element = element is TextElement ? ((TextElement)element).Parent : null;
        }
    }
    return value;
}

这按预期工作。但是,我不知道如何在 line-height 和 line-spacing 方面完成同样的事情。

我找到了一个看起来至少对行高有希望的答案here

Paragraph p = Rtb.Document.Blocks.FirstBlock as Paragraph;    
p.LineHeight = 10;

但我需要将此应用于选定的块,而不是第一个块。如果我能弄清楚用户用插入符号选择了哪个段落,那可能会起作用。

感谢任何帮助。 TIA。

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

    您找到的答案很接近。而不是查看文档,您应该能够直接查看插入符号的位置,如下所示:

    var paragraph = Rtb.CaretPosition.Paragraph;
    

    【讨论】:

    • 谢谢。我最终确实偶然发现了这一点,但这并没有真正解决我的问题。尽管我正在加载在 Word 中创建的指定双倍行距的 RTF 文档,但 LineHeight 值仍返回为 NaN。不仅如此,RTB 不显示间距(即,它呈现为单间距)。非常混乱。
    • 查看此问题的答案,看看它们是否有助于将您推向正确的方向。 DOCX 不是与流文档的一对一匹配。 stackoverflow.com/questions/30722434/…
    • 我正在加载一个 RTF 文件。我使用 Word 创建它,但我没有将其保存为 .docx 格式。为了确保不是 Word 问题,我创建了第二个 RTF 文件。只有这一次我使用了写字板(距离我上次打开那个应用程序已经有好几年了)。它只包含一个双倍行距的段落。一样。我只能得出结论,WPF RichTextBox 不支持双倍行距。不过,感谢您的帮助。
    猜你喜欢
    • 2020-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-27
    • 1970-01-01
    • 1970-01-01
    • 2015-04-04
    • 1970-01-01
    相关资源
    最近更新 更多