MeasureOverrideメソッドをオーバーライドするWrapPanelから派生したクラスがあります。私は自分のアプリのスケルトン/プロトタイプを作成しています。最初にビューモデルとビューを実行して、画面の流れなどの概念を取得し、他の人がデザインについてフィードバックを提供できるようにします。つまり、非常に軽量なアプリです。
特定のボタンをクリックしてから次の画面が表示されるまでに時間がかかることに気付いたので、アプリのプロファイルを作成しました(サンプリング)。スタートアップメソッドの隣にある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が再び表示され、かなりの時間がかかりました。
私は何か間違ったことをしていますか?