代码之家  ›  专栏  ›  技术社区  ›  nam

为什么从流中重新加载内容时,WPF RichTexBox中的线宽会发生变化

  •  0
  • nam  · 技术社区  · 3 年前

    问题 LineHeight 在WPF RichTexBox中设置为0?怎样才能解决这个问题?

    Xaml用于 RichTextBox :

    <RichTextBox x:Name="rtbTest" AcceptsTab="True" FontFamily="Calibri"/>
    

    从流中重新加载RichTexBox内容的代码 :

    TextRange textRange = new TextRange(rtbTest.Document.ContentStart, rtbTest.Document.ContentEnd);
    string rtf;
    using (var memoryStream = new MemoryStream())
    {
        textRange.Save(memoryStream, DataFormats.Rtf);
        rtf = ASCIIEncoding.Default.GetString(memoryStream.ToArray());
    }
    
    //rtf = rtf.Replace("abcd", "rstu");
    
    using (MemoryStream stream = new MemoryStream(ASCIIEncoding.Default.GetBytes(rtf)))
    {
        rtbTest.SelectAll();
        rtbTest.Selection.Load(stream, DataFormats.Rtf);
    }
    

    运行上述代码前RichTexBox的屏幕截图 :

    enter image description here

    运行上述代码后RichTexBox的屏幕截图 :

    LinHeight 已更改为0。

    enter image description here

    1 回复  |  直到 3 年前
        1
  •  1
  •   Victor    3 年前

    这个 DataFormats.Rtf 格式不保留行距。使用 DataFormats.Xaml DataFormats.XamlPackage :它还将保存和还原图像。