既存の段落Aの要素を調べたり使用して、新しいFlowDocument段落Bを作成しました。私の驚いたことに、新しい段落Bに追加した要素はParagraphAから魔法のように削除されました。私は以下の簡単な図を作成しました。 3行目が実行されると、myRun要素はmyParagraphAから削除されます。FlowDocument TextElementsは単一の親のみを許可しました
1)方法は? myParagraphAがmyRunをそのインラインコレクションから削除できるようにする根底にあるメカニズムは何ですか?
2)なぜですか?私はデザイナーが要素に2つの親を持たせたくないと仮定します。
3)私の所見が正しい場合は、myParagraphAを破壊しないようにmyParagraphBにmyRunのコピーを追加する必要があります。 myRunをテキストとプロパティ(Cloning)でコピーする最良の方法は何ですか?これは実際にこの操作をたくさん行うので、これはパフォーマンスヒットです。
var myRun = new Run("Hello");
var myParagraphA = new Paragraph(myRun);
var myParagraphB = new Paragraph(myRun);
おかげで、
ありがとうございます。 myRunはICloneableを実装していないので、どのようにクローンを作成できますか? – aidesigner
トリッキー。あなたのサンプルからはTextプロパティだけになりますが、候補がいくつかあります...おそらくカスタムクローナを作成したり、それを避けるようにしてください。たくさんのもの(TextDecorationsなど)を使用するときは、シリアライズを考慮する必要があります。 –