FlowDocument TextElements仅允许单个父级

时间:2012-02-14 21:41:55

标签: c# wpf richtextbox flowdocument

我通过检查/使用现有段落A的元素构建了一个新的FlowDocument段落B.令我惊讶的是,我添加到新段落B的元素被神奇地删除了ParagraphA。我在下面创建了一个简单的插图第3行执行后,myRun元素将从myParagraphA中删除。

1)怎么样?使myParagraphA从其内联集合中删除myRun的基本机制是什么?

2)为什么?我假设设计师不希望元素有2个父母。

3)如果我的观察结果是正确的,我想我必须将myRun的副本添加到myParagraphB,以避免破坏myParagraphA。使用文本和属性(克隆)复制myRun的最佳方法是什么?这是一个性能打击,因为我实际上会做很多这个操作。

var myRun = new Run("Hello");
var myParagraphA = new Paragraph(myRun);
var myParagraphB = new Paragraph(myRun);

谢谢,

1 个答案:

答案 0 :(得分:1)

项目一次只能在一个列表中是很常见的。您通常会看到父属性(注意:单数)。这是XmlElement,TreeViewItem等的情况。

因此,通过将Run添加到myParagraphB,您将覆盖其Parent属性,并且该属性的正确编码将其从myParagraphA的内联列表中删除。

解决方案确实是:克隆。