你现在的问题是
TextFormat.Xaml
而不是
TextFormat.XamlPackage
。
控制合并文档时是否合并行的属性是
Section.HasTrailingParagraphBreakOnPaste
财产。这个财产是
只有有效的
当加载或保存
XamlPackage
文本格式。使用时
Xaml
相反,在
Save()
在
Load()
。
因此,简单的解决方法是简单地更改加载和保存调用:
tr.Save(ms, DataFormats.XamlPackage);
ms.Seek(0, SeekOrigin.Begin);
tr = new TextRange(target.CaretPosition, target.CaretPosition);
tr.Load(ms, DataFormats.XamlPackage);
请注意,这也解决了您最终会遇到的另一个问题:使用
DataFormats.Xaml
因为没有地方放图像。用
DataFormats.XamlPackage
一个完整的包被构建,这样位图和其他包项就可以通过。
一旦您进行了此更改,您可能会发现另一个事实,这可能是您的问题,也可能不是您的问题:您的示例代码使用
document.ContentStart
和
document.ContentEnd
. 如果这是您的实际代码,您将发现
文档.contentstart
到
文档.contentEnd
必须由完整的段落组成,因此复制时总是在插入的末尾插入段落分隔符。如果这是个问题,可以用
RichTextBox.Selection
(如果这是用户界面驱动的)或使用
TextPointer
备份
ContentEnd
到隐式段落标记之前,例如:
var tr = new TextRange(document.ContentStart,
document.ContentEnd.GetInsertionPosition(
LogicalDirection.Backward));