it-swarm.com.de

Konvertieren Sie eine Winform-Anwendung in eine WPF-Anwendung

Ich habe ein kleines Programm mit WinForms erstellt und möchte es jetzt erneut mit WPF erstellen. 

Ich bin neu in WPF und habe gelesen, dass Sie mit XAML auch auf WPF verzichten können, dh nur mit Code. 

Natürlich haben Sie keine XAML, wenn Sie Winforms verwenden. Kann ich den gleichen Code für die WPF-Anwendung verwenden, den ich für die Winforms-Anwendung verwendet habe, und dasselbe Ergebnis erzielen? Oder muss ich XAML erstellen und bearbeiten? Was sind die Vorteile, wenn Sie XAML verwenden oder nicht verwenden? 

In Anbetracht der bisherigen Erfahrungen mit Winforms sollte ich die Art und Weise ändern, in der ich über Design und Implementierung nachdenke, die für Winforms funktionierten, aber nicht für WPF geeignet sind.

13
Yonatan Nir

Nein, Sie können Code aus Winforms in WPF nicht wiederverwenden.

und selbst wenn Sie könnten, sollten Sie nicht.

was auch immer Sie mit XAML machen können, können Sie auch darauf verzichten

Sie sollten XAML verwenden, um die Benutzeroberfläche zu definieren, und dann DataBinding und MVVM verwenden. Dies ist eine viel professionellere Art der Entwicklung als der herkömmliche prozedurale Winforms-Ansatz.

Die Verwendung von XAML ist viel schwieriger als die Verwendung von XAML. Es mag auf den ersten Blick einschüchternd wirken, aber es ist eine wirklich tolle Sache, mit der man arbeiten kann.

Natürlich haben Sie keine XAML, wenn Sie Winforms verwenden

Nein natürlich nicht. Winforms ist eine wirklich alte Technologie, die nichts unterstützt. Aus diesem Grund haben sie den Visual Studio-Designer entwickelt, sonst hätte nie jemand Winforms für irgendetwas verwendet, wegen der ungeheuren gigantischen Menge an Code, die benötigt wird, um nützliche Dinge zu tun.

Kann ich denselben Code für die WPF-Anwendung verwenden, die ich für die .__-Datei verwendet habe? Winforms-Anwendung und erhalten das gleiche Ergebnis?

Wahrscheinlich, wenn Sie einige Klassennamen und so weiter anpassen, verlieren Sie jedoch den Hauptvorteil von WPF, der den schrecklichen, Winforms-artigen Code beseitigt.

unter Berücksichtigung der bisherigen Erfahrungen mit Winforms, sollte ich irgendwie ändere die Art und Weise, in der ich über Design und Implementierung nachdenke. für Winforms gearbeitet, aber nicht für WPF geeignet?

Ja. WPF unterstützt MVVM, und dies erfordert eine völlig andere Mentalität als der traditionelle Winforms-Ansatz.

Ich empfehle dringend, Rachel's Excellent Post über das Upgrade von Winforms auf WPF zu lesen.

25

Ich habe versucht, eine Winforms-App direkt in WPF zu konvertieren. Dies verursacht weitaus mehr Probleme, als Sie benötigen, da Sie ständig gegen das Framework kämpfen. Informieren Sie sich über MVVM und Datenbindung und verwenden Sie das. Es ist, was WPF ist rundherum entworfen und bietet einige Vorteile wie Testbarkeit. Mit einigen einfachen Konzepten (Datenbindung, Ansichtsmodelle usw.) können Sie zwar einen langen Weg zurücklegen und dabei Ihr Wissen erweitern, aber ich würde zunächst ein Verständnis von MVVM und Datenbinding in WPF empfehlen. 

Ein guter Rahmen, um damit anzufangen, wäre MVVMLight, aber es lohnt sich, die Grundlagen zu schreiben, ohne einen Rahmen zu haben, um zu erfahren, wie die Dinge zuerst funktionieren. 

Ich scheine mich zu erinnern, dass dies eine gute Gruppe von Beiträgen von Reed Copsey ist: http://reedcopsey.com/series/windows-forms-to-mvvm/

2
gmn

Tatsächlich hängt es davon ab, wie komplex Ihr Projekt ist. Für ein ganz kleines Projekt können Sie diese "Konvertierung" ganz einfach durchführen. Dies ist jedoch keine gute Praxis, da die WPF-Entwicklung häufig auf MVVM/Prism basiert und sie viele Vorteile mit sich bringt .. Auch das Verhalten Ihrer Benutzeroberfläche kann unterschiedlich sein - es hängt von der Komplexität Ihres Projekts ab.

1

Der Versuch, WPF-Steuerelemente ohne XAML zu erstellen, erfordert Probleme. Das gesamte Framework basiert auf dem MVVM-Muster, das verlangt, dass Ihre Ansicht deklarativ und nicht prozedural beschrieben wird. Sie können zwar durchaus dieselben UI-Objekte in C # und XAML erstellen, aber Sie müssen in C # wissen, wie das Framework funktioniert, um zu kompensieren, wenn sich der Status Ihrer UI ändert. Auf der anderen Seite, wenn Sie es XAML machen (wie WPF es vorschreibt, dass Sie es tun sollen), werden die Dinge im Allgemeinen gut und ohne die Notwendigkeit endloser Fehler aktualisiert. Kurz gesagt "Ja" können Sie es im Code tun, aber "Nein" können Sie es nicht im Code tun, ohne Ihren Verstand zu verlieren.

1
Andrew

Ich werde 2. oder 3. oder 4. die anderen Antworten. Versuchen Sie niemals, eine WPF-App mit "Winforms-Style" -Code zu erstellen. Ich habe das bei meiner ersten WPF-App gemacht und es war der größte Fehler, den ich je gemacht habe. Was für ein riesiges Durcheinander. Mit der zweiten App bin ich auf halbem Weg in Richtung MVVM gegangen und auch das war ein riesiges Durcheinander. 3. App und seitdem ich 100% MVVM, DI usw. und 100% durch das Buch WPF gegangen bin und Code ist super sauber.

Es hat keinen Sinn, Winforms-Code in WPF zu portieren. Der Großteil des Codes, den Sie in Winforms geschrieben haben, wird verworfen, wenn Sie WPF verwenden. Im Grunde ist das einzige tragbare Zeug die Geschäftslogik. Die gesamte Logik der Benutzeroberfläche ist völlig unterschiedlich.

Und Sie werden uns später danken, denn eines der besten Konzepte, die jemals zu WPF gemacht wurden, ist die Trennung von Benutzeroberfläche und Geschäftslogik. Das Austauschen von Steuerelementen ist somit ein Kinderspiel.

0
SledgeHammer