0

パブリック プロパティである FlowDocument を持っている
XAML
にバインドされている 作成にかなりのコストがかかる
多数の入力のいずれかが変更された可能性があるため、動的に作成する必要がある
また、サイズが大きい - コピーを保持したくない実際に保持されている場合はコピーまたは参照 - 作成にはコストがかかります - 書式設定のための多くの大きなループ。
動的です - get の呼び出しごとに作成されます

このパブリック プロパティはコード ビハインドでは参照されません
。XAML では一度だけバインドされ ます。

NotifyPropertyChanged は 1 回だけ呼び出され
ますが、get
の呼び出しが 2 回表示されます スタック トレースはまったく変更されないため、XAML からの 2 回の呼び出しであると思われます

NotifyPropertyChanged への 1 回の呼び出しで FlowDocument を 2 回作成したくありません
。これを修正するにはどうすればよいですか?

public FlowDocument DocFlow
{
    get
    {
        FlowDocument docFlowDocument = new FlowDocument();
        // expensive build docFlowDocument 
        return docFlowDocument;
    }
}

参照を保持することは解決策ではありません

private FlowDocument docFlow;

これは動的コンテンツであり、任意の数の入力が変更される可能性があります。

1 つの解決策は、前の入力と前の出力のコピーをページ レベルのプライベート変数として保持することです。
次に、現在のすべての入力を比較し、入力が変更されていない場合は、前の出力を返します。
入力と出力の両方が大きくなる可能性があるため、コピーを保持したくありません。
HighCore 参照がコピーではないことはわかっています。ただし、前の入力と前の出力への単一の参照はメモリです。

非常に単純な例でこれを再現することはできません。
実際のアプリにはフレームとタブがあります。
問題を再現するために、アプリの縮小版に取り組んでいます。もう少し取り組みますが、問題が再現できない場合は質問を削除します。

4

0 に答える 0