2011-01-08 3 views
0

Ich arbeite gerade an einer Anwendung, die ein Tabellenlayout-Panel verwendet, um eine Datenzeile anzuzeigen. Jede Zeile enthält eine bestimmte Anzahl von Textfeldern und Kontrollkästchen.Funktioniert ein WPF-Raster besser als Winforms Tabellenlayout-Panel?

Die Anzahl der vorhandenen Zeilen ist normalerweise ziemlich groß, wodurch das Laden und Navigieren des Tabellenlayouts extrem langsam wird.

Nach einigen Nachforschungen habe ich festgestellt, dass das TLP eines der langsamsten Winform UI-Steuerelemente ist und ich möchte stattdessen ein WPF-Grid implementieren.

Meine Frage ist zweifach:

1) Hat ein WPF Grid eine bessere Leistung als ein Tabellenlayout-Panel, wenn es um eine große Anzahl von Zeilen kommt?

2) Ist es möglich, WPF-Steuerelemente in eine Anwendung einzuschließen, die ausschließlich Winform-Steuerelemente verwendet? (Die Anwendung verwendet .NET 3.5)

Vielen Dank für Ihre Zeit und einen schönen Tag.

+1

Warum nicht verwenden Datagridview? Es ist für die Anzeige von Datenzeilen gemacht ... – siride

+0

Funktioniert das DataGridView besser als das Tabellenlayout Panel? Danke für Ihre Hilfe. –

+0

Ich habe überprüft, ein DataGridView kann mir nicht helfen, da die Daten, die ich zeige, nicht nur reiner Text sind. Jede Zeile ist eine Kombination mehrerer Textfelder. Nicht nur das, aber die Textboxen respektieren eine bestimmte Reihenfolge und ein Layout. Sie sind nicht nahe beieinander und von gleicher Größe. –

Antwort

4

Für die Leistung müssen Sie Ihren eigenen Vergleich durchführen. Es gibt so viele Faktoren, die sich darauf auswirken könnten, dass ein gut geschriebenes WinForms schneller als ein schlecht geschriebenes WPF sein kann oder umgekehrt. Machen Sie ein wenig Prototyping und sehen Sie, ob es ein offensichtlicher Gewinn für Sie ist.

Soweit mit ein wenig WPF in einer meist WinForms-Anwendung, ja das ist unterstützt und kann gut funktionieren. Fügen Sie einfach Ihren WPF-Inhalt in ein WPF UserControl ein und fügen Sie dann ein ElementHost zu Ihrem Formular hinzu und hosten Sie das WPF-Steuerelement darin. Hier ist viel mehr Informationen:

0

Haben Sie einen Hintergrundarbeiter oder einen Thread zum Laden des Elements in das Tabellenlayoutfeld, wenn Sie das Problem mit dem Einfrieren haben?

+0

Das Hinzufügen von Elementen zum Tabellenlayoutfeld erfolgt nicht mithilfe von Threads. Ich plante das Hinzufügen von Multithreading, aber das Manipulieren (d. H. Das Scrollen oder Ändern der Größe) des Tabellenlayout-Bedienfelds ist immer noch langsam, weshalb ich es vorzog, WPF von Anfang an zu implementieren. –

Verwandte Themen