有一个作为公共属性的 FlowDocument
它在 XAML 中绑定创建它
的成本相当高
需要动态创建它,因为许多输入中的任何一个都可能已更改
它也很大 - 不想保留副本 忘记如果一个如果实际持有,请复制或参考 - 创建成本很高 - 一个包含大量格式化的大循环。
它是动态的 - 它是在每次调用 get 时创建的
此公共属性未
在 XAML 后面的代码中引用,它仅绑定一次
NotifyPropertyChanged 只被调用一次
但我看到两个调用来获取
堆栈跟踪根本没有改变所以我怀疑这是来自 XAML 的两个调用
我不想为一次调用 NotifyPropertyChanged 创建两次 FlowDocument
我该如何解决这个问题?
public FlowDocument DocFlow
{
get
{
FlowDocument docFlowDocument = new FlowDocument();
// expensive build docFlowDocument
return docFlowDocument;
}
}
持有参考不是解决方案
private FlowDocument docFlow;
这是动态内容,任何数量的输入都可能发生变化。
一种解决方案是将先前输入和先前输出的副本保存为页面级私有变量。
然后比较所有当前输入,如果没有输入改变,则返回先前的输出。
输入和输出都可能很大,所以我宁愿不保留副本。
HighCore 我知道参考不是副本。但是对先前输入和先前输出的单一引用是内存。
我无法在一个非常简单的示例中重现这一点。
真正的应用程序有框架和标签。
我正在开发应用程序的缩小版本以重现该问题。我会再做一些工作,但如果我无法重现该问题,我将删除该问题。