コンテキストメニューに10,000個のアイテムがあるときに表示するのに10秒以上かかることがわかりました。これをもっと速くしたいです(例えば1秒未満)WPFコンテキストメニューは多くの項目で遅いです - どうすれば速くできますか?
ここに私のテストコードがありますメニュー遅さは、直接:
private void button1_Click(object sender, RoutedEventArgs e)
{
ContextMenu cm = new ContextMenu();
for (int i = 0; i < 1000; i++)
{
MenuItem mi = new MenuItem();
mi.Header = "test"; // this is HOT - 3%
mi.Tag = this; // cold
for (int j = 0; j < 10; j++)
{
MenuItem mi2 = new MenuItem(); // this is HOT - 1%
mi2.Header = "test"; // this is HOT - 12%
mi2.Tag = this; // cold
mi.Items.Add(mi2); // this is HOT - 6%
}
cm.Items.Add(mi); // this is HOT - 3%
}
cm.IsOpen = true; // this is HOT - 72%
}
私が使用したパフォーマンスプロファイラによると、cm.IsOpenは、ほとんどの時間を取っている - しかし、mi.Headerも重要である設定します。
なぜあなたは使用できないコンテキストメニューを作っていますか? – SLaks
まさに私の思考...メニューは約9項目までうまく機能します。 10kのアイテムを詰め込むのはナンセンスだけでなく、気違いです。 – Joey
Woah、コンテキストメニューの10000項目、私は上記のコンテキストメニューを嫌いです。 – Gabe