2010-08-11 13 views
13

Gibt es eine praktische Möglichkeit für uns, langsam eine WinForms-Anwendung zu WPF zu entwickeln, ohne einen Support-Albtraum für uns selbst mit seltsamen Interop-Szenarien zu erstellen?WinForms zu WPF - Wie kommen wir von hier her?

Hintergrundinfo:

Wir haben eine große Schlacht grau WinForms-Anwendung, die stark durch eine interne Gruppe von etwa 60 bis 75 Benutzern verwendet wird. Wir fangen an, an Orte zu rennen, an denen wir einen Nutzen aus der App in WPF ziehen könnten, aber das ist nicht genug, um ein großes Projekt zu rechtfertigen, das es komplett neu schreibt. Alle Bildschirme in der App sind in sich geschlossene Kontrollen Benutzer WinForms und die WinForms-Anwendung ist nur eine Hülle, die menuing, zum Öffnen/Schließen-Formulare verarbeitet werden, bietet einige gemeinsamen Hilfsmethoden, etc ...

Bis jetzt der beste Die Idee, die wir hatten, besteht darin, die Shell-Anwendung in WPF zu konvertieren und dann die darin enthaltenen WinForms-Benutzersteuerelemente zu hosten. Wir dachten, dass wir dann die Benutzersteuerelemente im Laufe der Zeit konvertieren könnten, und diese Änderungen an Initiativen binden, die genügend geschäftlichen Nutzen für die zusätzliche Arbeit haben. Ich bin besorgt darüber, wie gut die Interop funktioniert und wie sie die Leistung beeinflusst. Ich bin auch besorgt darüber, wie wir zu einem neuen Look für die App übergehen. Es wäre merkwürdig, die Shell-App pfiffig aussehen zu lassen und dann alte graue Benutzersteuerelemente für Schlachtschiffe zu beherbergen, und es erscheint auch seltsam, die Shell-App in WPF zu erstellen und sie so aussehen zu lassen, wie sie es in WinForms getan hat.

Wenn eines der Caliburn-, Prism- oder eines anderen ähnlichen Frameworks den Übergang erleichtern würde, wären wir bereit, diese Optionen ebenfalls zu untersuchen.

Antwort

11

Wir waren in einer ähnlichen Situation und wählten den folgenden Pfad: Am Anfang hosten wir ein paar WPF-Fenster in der Anwendungsshell (immer noch WinForms). Natürlich gab es einige sichtbare Unterschiede, aber wir reduzierten den Unterschied absichtlich, indem wir die neuen Fenster abdunkelten. Wir dachten uns, dass es zu dem Zeitpunkt, an dem wir die verbleibenden Fenster/Steuerelemente konvertieren würden, einfacher wäre, zu einem lebendigeren Erlebnis zu "upgraden", da die Benutzeroberfläche vollständig aus WPF besteht und wir einen Grafikdesigner einbeziehen können, der auf XAML basiert.

Wir haben jetzt den Punkt erreicht, wo die Mehrheit der Fenster WPF sind. Wir haben mit der Konvertierung der WinForms-Shell-Anwendung in eine WPF-basierte Shell-Anwendung begonnen, die die verbleibenden WinForms hostet. Wir haben zwar eine Art dumpfe Farben, aber die Benutzer haben den Unterschied bemerkt und obwohl sie klein sind, mögen unsere Benutzer die schrittweise positive Veränderung. Nicht zu lange und wir werden das letzte WinForm in Rente gehen. Das wird der Punkt sein, an dem wir unsere Grafikdesigner von der Leine nehmen werden!

Zur Leistung: Ich kann sicherlich keine allgemeine Aussage treffen, da es stark von Ihren speziellen Kontrollen/Fenstern abhängt. In unserem Produkt (mehrere hundert Fenster) haben wir kein signifikantes Leistungsproblem im Zusammenhang mit der Mischung aus WPF und WinForms gefunden.

Wir haben keine der Frameworks untersucht, daher kann ich leider nichts dazu sagen.

+1

+1 Dies beschreibt meine eigenen Erfahrungen sehr gut. Hier ist auch eine interessante PDC-Sitzung darüber, wie Visual Studio 2010 mit NET Framework 4 Interop implementiert wurde: http://microsoftpdc.com/2009/CL09 –

+1

Ich bin mir nicht sicher, es gibt eine "richtige" Antwort auf dieses, aber ich denke, dass dies der Ansatz ist, den wir am ehesten annehmen werden. –

+0

und haben Sie bei all diesen Bemühungen, die vom Unternehmen bezahlt wurden, den Endbenutzern neue nützliche Funktionen zur Verfügung gestellt oder hatten Sie gerade eine gute Zeit, Augenschmaus zu machen? – smirkingman

4

Große Frage, derzeit die meiste Arbeit in WPF befasst sich mit der Konvertierung alter WinForms-Anwendung in WPF. Aus meiner Erfahrung besteht der beste Fall darin, die Anwendung basierend auf alten Anwendungen/Anforderungen neu zu erstellen. Glücklicherweise war ich Teil eines Projekts, bei dem wir die Anwendung von Grund auf neu geschrieben haben und ich bin mir sicher, dass es weniger Zeit und Investition in Anspruch nahm, als die beiden zu mischen.

Ich persönlich fühle, dass es ein Durcheinander geschaffen hätte, wenn wir versucht hätten, die beiden zu mischen. Ein weiterer Punkt ist, dass es schwierig sein wird, die gemischte Anwendung effizient zu gestalten.

In meinem aktuellen Projekt (das ein riesiges Projekt aus den letzten 10 Jahren ist) konvertieren wir die Anwendung Modul für Modul. Zum Glück für uns besteht unsere Anwendung aus verschiedenen kleineren Anwendungen, so dass es einfacher ist, sie einzeln zu konvertieren. In Ihrem Fall würde ich sagen, dass Sie die Bereiche identifizieren, die völlig zu WPF umgewandelt werden können und beginnen, sie in WPF bauen, wie hier vorgeschlagen -

Windows Forms - WPF Interoperabilität FAQ: http://windowsclient.net/learn/integration.aspx

würde ich auch vorschlagen Verwenden einiger Tools zum Konvertieren der Windows-Formulare in XAML (WPF); das wird dir sicherlich helfen, etwas Zeit zu sparen.

Windows Forms WPF-Konverter: http://wf2wpf.codeplex.com/

Windows Forms zu XAML Converter: http://www.ingeniumsoft.com/Products/WinForm2XAML/tabid/63/language/en-US/Default.aspx

Windows Forms Windows Presentation Foundation Converter: http://www.spiderwan.com/spiderwan/ConvertWinFormToWPF/WinFormToWPF.aspx

+1

Ich bevorzuge generell den von John beschriebenen inkrementellen Konvertierungsansatz, stimme aber zu, dass es Zeiten gibt, in denen es sinnvoll ist, die ursprünglichen Anforderungen neu zu schreiben. Ich stimme jedoch absolut nicht zu, dass Paul G die Windows Forms zu WPF-Konvertierungstools betrachtet: Diejenigen, die solche Tools verwenden, enden unweigerlich mit einer Anwendung, die noch schwerer zu warten ist als die Winforms-App. Richtig gemacht, WPF-Anwendungen sind viel einfacher und einfacher zu pflegen als die entsprechenden Winforms. Die Zeit, die für die Erstellung von Qualitätsansichtsmodellen und XAML benötigt wird, wird sich zehnfach rentieren, insbesondere beim Neuschreiben. –

+0

Punkt genommen, Design-Modelle und XAML selbst gestalten wird immer besser sein. Ich wollte Paul nur über die verfügbaren Optionen informieren (um natürlich Zeit zu sparen). – akjoshi

Verwandte Themen