在WPF中显示大文本的最佳方式?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在WPF中显示大文本的最佳方式?相关的知识,希望对你有一定的参考价值。

我需要在WPF代码中显示大量的文本数据。首先我尝试使用TextBox(当然渲染速度太慢)。现在我正在使用FlowDocument - 它真棒 - 但最近我有另一个请求:文本不应该连字符。据说它不是(document.IsHyphenationEnabled = false)但我仍然没有看到我珍贵的水平滚动条。如果我放大缩放文本是...连字符。

alt text

public string TextToShow
{
    set
    {
        Paragraph paragraph = new Paragraph();
        paragraph.Inlines.Add(value);

        FlowDocument document = new FlowDocument(paragraph);
        document.IsHyphenationEnabled = false;

        flowReader.Document = document;
        flowReader.IsScrollViewEnabled = true;
        flowReader.ViewingMode = FlowDocumentReaderViewingMode.Scroll;
        flowReader.IsPrintEnabled = true;
        flowReader.IsPageViewEnabled = false;
        flowReader.IsTwoPageViewEnabled = false;
    }
}

这就是我创建FlowDocument的方法 - 这是我的WPF控件的一部分:

<FlowDocumentReader Name="flowReader" Margin="2 2 2 2" Grid.Row="0" />

没有犯罪=))

我想知道如何驯服这种野兽 - 谷歌没有任何帮助。或者您有一些替代方法来显示兆字节的文本,或者文本框具有一些我需要启用的虚拟化功能。无论如何,我很乐意听到你的回复!

答案

这真的包装不是连字符。可以通过将FlowDocument.PageWidth设置为合理的值来克服这一点,唯一的问题是如何确定此值。 Omer建议这个食谱msdn.itags.org/visual-studio/36912/,但我不喜欢使用TextBlock作为文本的测量工具。好多了:

            Paragraph paragraph = new Paragraph();
            paragraph.Inlines.Add(value);


            FormattedText text = new FormattedText(value, CultureInfo.CurrentCulture, FlowDirection.LeftToRight, new Typeface(paragraph.FontFamily, paragraph.FontStyle, paragraph.FontWeight, paragraph.FontStretch), paragraph.FontSize, Brushes.Black );

            FlowDocument document = new FlowDocument(paragraph);
            document.PageWidth = text.Width*1.5;
            document.IsHyphenationEnabled = false;

欧麦尔 - 感谢方向。

以上是关于在WPF中显示大文本的最佳方式?的主要内容,如果未能解决你的问题,请参考以下文章

在鼠标位置(鼠标左上角)显示 WPF 窗口的最佳方式是啥?

在 WPF 控件上显示“加载”指示器的最佳方法是啥

在 SwiftUI 中装饰文本片段的最佳方法是啥?

如何处理在WPF TreeView中显示数据的大延迟

C#/WPF:如何以编程方式创建所需数量的文本块以显示表中的数据

文本渲染仍然模糊:WPF 应用程序的最佳字体?