パブリック プロパティである 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 参照がコピーではないことはわかっています。ただし、前の入力と前の出力への単一の参照はメモリです。
非常に単純な例でこれを再現することはできません。
実際のアプリにはフレームとタブがあります。
問題を再現するために、アプリの縮小版に取り組んでいます。もう少し取り組みますが、問題が再現できない場合は質問を削除します。