Ich habe festgestellt, dass das Kontextmenü mehr als 10 Sekunden dauert, um 10.000 Objekte anzuzeigen. Ich möchte es schneller machen (z. B. weniger als 1 Sekunde)WPF Contextmenu ist langsam mit vielen Elementen - wie kann ich es beschleunigen?
Hier ist mein Testcode, der den Kontext zeigt Menü Langsamkeit direkt:
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%
}
nach Performance Profiler ich verwendet habe, die cm.IsOpen die meiste Zeit nimmt - aber die mi.Header Einstellung ist ebenfalls von Bedeutung.
Warum sind Sie ein unbrauchbares Kontextmenü zu machen? – SLaks
Genau meine Gedanken ... Menüs funktionieren gut mit ungefähr bis zu 9 Elementen. 10k Gegenstände darin zu stopfen ist nicht nur Unsinn, es ist verrückt. – Joey
Woah, 10000 Elemente in einem Kontextmenü, ich würde das Kontextmenü nicht mögen. – Gabe