如何解决为什么从流重新加载其内容时 WPF RichTexBox 中的 LineHeight 会发生变化
问题:为什么以下代码将 WPF RichTexBox 中的默认 LineHeight 更改为 0?解决问题的正确方法是什么?
RichTextBox
的 Xaml:
<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 截图:
运行上述代码后 RichTexBox 的屏幕截图:
您注意到默认的 LinHeight 已更改为 0。
解决方法
DataFormats.Rtf
格式不保留行间距。使用 DataFormats.Xaml
代替(不支持图像)。甚至 DataFormats.XamlPackage
:它也会保存和恢复图像。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。