我有一个来自 WrapPanel 的派生类,它覆盖了 MeasureOverride 方法。我正在构建我的应用程序的骨架/原型,首先制作视图模型和视图以了解屏幕流程等,同时让其他人提供有关设计的反馈。所以它是一个非常轻量级的应用程序。
我注意到在打开下一个屏幕之前单击特定按钮需要很长时间,因此我对应用程序进行了分析(采样)。在 Startup 方法旁边,MeasureOverride 是占用时间最多的单个方法。这是我的代码:
public class GroupWrapPanel : WrapPanel
{
public const double ItemSize = 120.0;
protected override Size MeasureOverride(Size availableSize)
{
var numberOfRows = (availableSize.Height / ItemSize);
var numberOfCols = (Children.Count / numberOfRows) + 1;
var newSize = new Size(numberOfCols * ItemSize, availableSize.Height);
return base.MeasureOverride(newSize);
}
}
所以我注释掉了整个覆盖,现在它执行得很快——MeasureOverride 不在占用大部分时间的方法列表中。我只是添加了一个覆盖,除了调用基类之外什么都不做。现在 MeasureOverride 又出现了,需要相当长的时间。
难道我做错了什么?