2008-09-21 1 views
12

zu aktualisieren Ich arbeite an einer großen C# -Anwendung (ca. 450.000 Zeilen Code), haben wir ständig Probleme mit Desktop-Heap und GDI Leckagen behandeln. WPF löst diese Probleme, aber ich weiß nicht, was der beste Weg zum Upgrade ist (ich erwarte, dass dies lange dauern wird). Die Anwendung hat nur wenige Formen, aber diese können viele verschiedene Gruppen von Benutzersteuerelementen enthalten, die programmatisch festgelegt werden.Was ist der einfachste Weg, eine große C# -Winforms-App auf WPF

Dies ist eine firmeninterne App, daher sind unsere Veröffentlichungszyklen sehr kurz (typischerweise 3 Wochen Freigabezyklus).

Gibt es einen graduellen Upgrade-Pfad oder müssen wir den Treffer in einer massiven Anstrengung machen?

+6

Wenn Sie in C# verlieren, werden Sie andere Dinge in WPF auslaufen.Repariere deinen Code, bevor du denkst, dass ein neues Tool alle deine Probleme lösen wird. – gbjbaanb

Antwort

11

Sie können beginnen, indem Sie einen WPF-Host erstellen.

Dann können Sie das < WindowsFormHost/> Steuerelement verwenden, um Ihre aktuelle Anwendung zu hosten. Dann empfehle ich, eine Bibliothek Ihrer neuen Steuerelemente in WPF zu erstellen. Nach und nach können Sie die Steuerelemente erstellen (ich empfehle, sie zu benutzerdefinierten Steuerelementen zu machen, nicht zu Benutzersteuerelementen). Innerhalb des Stils für jedes Steuerelement können Sie damit beginnen, das < ElementHost/> Steuerelement zu verwenden, um das Steuerelement "alte" Windows Forms zu enthalten. Dann können Sie sich Zeit nehmen, jedes Steuerelement als vollständiges WPF neu zu gestalten und neu zu erstellen.

Ich denke, es wird noch eine erste Anstrengung dauern, Ihre Kontrollwrapper zu erstellen und einen WPF-Host für die Anwendung zu entwerfen. Ich bin mir nicht sicher über die Größe der Anwendung und/oder die Komplexität der Benutzersteuerelemente, daher bin ich mir nicht sicher, wie viel Aufwand das für Sie wäre. Relativ gesehen ist es wesentlich weniger Aufwand und viel schneller, Ihre Anwendung in WPF auf diese Weise zu betreiben.

Ich würde nicht nur das tun und vergessen, obwohl darüber, wie Sie in Probleme mit Kontrollen laufen können sie überlagern (Windows Forms mit WPF nicht gut spielen, vor allem mit Folien und anderen Visuals)

Bitte aktualisieren Sie uns über den Status dieses Projekts oder stellen Sie mehr technische Informationen bereit, wenn Sie eine spezifischere Anleitung wünschen. Danke :)

3

Verwenden Sie viele Benutzersteuerelemente für die Teile? WPF kann Winform-Steuerelemente hosten, sodass Sie Teile stückweise in das Hauptformular einfügen können.

+0

Ja, (ich habe die Steuerelemente => user-controls bearbeitet. – Chris

+0

Sie können Ihre Benutzersteuerelemente zu einem WPF-Formular hinzufügen. Übersetzen Sie sie dann nach Bedarf in WPF –

2

Mit WPF können Sie Windows Forms-Benutzersteuerelemente in eine WPF-Anwendung einbetten, wodurch Sie den Übergang in kleineren Schritten durchführen können.

Werfen Sie einen Blick auf die Klasse WindowsFormsHost in der WPF-Dokumentation.

1

Es gibt ein sehr interessantes Whitepaper ist eine .NET 2.0 winform Anwendung zu WPF zur Migration finden Sie Evolving toward a .NET 3.5 application

Papier Zusammenfassung: In diesem Artikel werde ich einige der Denkprozesse, Entscheidungen umreißen und Probleme, mit denen wir bei der Entwicklung einer Microsoft .NET-Anwendung von 1.x/2.x auf 3.x konfrontiert wurden. Ich schaue mir an, wie wir unserem Kunden geholfen haben, die neue Technologie zu übernehmen, und dennoch einen für das Geschäft akzeptablen Zeitplan eingehalten haben.

Verwandte Themen