Frage Was ist WPF für den WinForms-Programmierer?


Was ist WPF für den WinForms-Programmierer?

WinForms destilliert Hinzufügen von Steuerelementen zu Formularen und Hinzufügen von Ereignishandlern. Dies ist einfach und einfach und ermöglicht es Ihnen, funktionale GUIs schnell zu erstellen.

WPF ist andererseits XAML (?) + Code (?), Der wie eine viel kompliziertere Art erscheint, hübschere UIs langsam zu machen.

Es gibt eine Menge existierender SO-Fragen zu Aspekten von WPF, aber ich bin auf der Suche nach einem Zwei-Satz-Blog, um zu erfahren, wie man es ernst nimmt. Sollte ich mich nur darauf konzentrieren, XAML zu lernen? Oder wird echtes WPF geschrieben, indem direkt auf die Klassen zugegriffen wird und Code geschrieben wird (wie Winforms)?

Welchen praktischen Nutzen würde ein WinForms-Programmierer wie ich aus der Verwendung von WPF ziehen? 3D-Grafiken, willkürliches Zoomen von Text und benutzerdefinierte Skins für Anwendungen sind keine gültigen Antworten. Was bietet WPF eine App zur Sendungsverfolgung an?


10
2018-04-27 04:54


Ursprung


Antworten:


WPF bringt

  • Deklarative UI-Programmierung: Die Darstellung oder das Aussehen der UI (XAML) wurde vom Code (.cs et. All) getrennt, so dass der XAML unabhängig von Leuten erstellt werden kann, die in dieser Hinsicht gut sind - Grafikdesigner. Sie senden dann ihr fertiges Aussehen an die Entwickler, die den Code schreiben, damit er funktioniert. (Einfacheres Zeug kann wieder direkt in XAML behandelt werden). Es soll Ihnen eine größere Parallelität und eine gute UX (im Gegensatz zu den von den Entwicklern genehmigten UIs) bieten.
  • Datenbindung: Wieder eine deklarative Verbiegung. Sie geben deklarativ an, welche Modelleigenschaft diese UI-Steuerung rendert. WPF sorgt dafür, dass die Daten in die Steuerung übernommen und modifizierte Inhalte zusammen mit Änderungsbenachrichtigungen aktualisiert werden.
  • Verbessert Zusammengesetztes Kontrollmodell - Sie können nun fast alles in alles einbetten, so dass der Fantasie keine Grenzen gesetzt sind.
  • Data Templates, Control Templates etc .. - wieder Trennung von UI von Code. Diese XAML-Vorlagen geben an (Einmal) wie eine Datenstruktur oder UI-Control für den Benutzer aussehen soll.
  • Besser bei X: Natürlich verbesserte MS eine Reihe anderer Aspekte wie Rendering (weniger Updates, GDI), Skalierung (Auflösungsunabhängigkeit), Transparenz, Layouts (nicht absolut), Text-Rendering, Animation & Video-Unterstützung, ein verbessertes Ereignismodell, et. alle
  • Stile, Trigger : Einfaches, einheitliches Look-and-Feel global mit In-One-Place-Stilen (erneut XAML). Trigger sind Code-Blöcke, die ausgeführt werden, wenn ein Ereignis auftritt, z. 'Der Text dieses Steuerelements wurde geändert. Aktualisieren Sie nun seine Vordergrundeigenschaft auf blau, um "geändert" anzuzeigen. Einfache Dinge können direkt in XAML erledigt werden.

11
2018-04-27 05:30



Ich denke, eine Möglichkeit wäre, HTML + CSS-Webseiten zu betrachten. Wir hatten HTML und das war großartig, außer dass alles zusammengewürfelt war. Was die Leute realisiert haben, ist, dass man mit CSS die Struktur des Dokuments von seinem Präsentation. XAML macht das Gleiche oder lässt es zumindest zu und ermutigt es.

Wie für praktische Vorteile, überfliegen Sie die MSDN-Beispiele. Ich denke eher, dass WPF mehr auf sogenannte "Rich Media" ausgerichtet ist, mit viel komplexeren Elementen. Ihr Beispiel für eine App, die Versandaufträge verfolgt, ist nicht besonders gut, zumal einige dieser Systeme noch auf DOS-basierten Schnittstellen laufen.


1
2018-04-27 05:02



Ich arbeite seit 4 Jahren fast ausschließlich in WinForms und nutze WPF für ein paar kleine Projekte bei der Arbeit. Die Lernkurve ist steil. Aber wenn man sich einmal daran gewöhnt hat, ist es das wert.

WPF ist viel mehr als nur visuelle Augenweide wie Skinning oder Animation. Selbst für grundlegende Anwendungen zum Verfolgen von Versandaufträgen können Sie WPF nutzen. WinForms bringt Sie nur soweit mit seinen Steuerelementen. Wenn Sie eine leicht angepasste Benutzeroberfläche anzeigen wollten, mussten Sie in Ihren Steuerelementen häufig mithilfe von GDI benutzerdefinierte Zeichen erstellen, was schnell zum Albtraum werden kann. In WPF ist das Anpassen von Daten durch Datenvorlagen trivial. Sie können Listenfeldelemente problemlos anpassen, Steuerelemente zu Listenansichtsspalten oder Kopfzeilen usw. hinzufügen. Mit WPF können Sie die Steuerung komplexer UI-Layouts mit dem leistungsstarken Layoutsystem steuern. Ich bin auch erstaunt, wie wenig Code in WPF benötigt wird, um die gleichen Dinge zu erreichen, die ich in WinForms gemacht habe. Das bedeutet weniger Fehler und einfachere Pflege von Anwendungen.


1
2018-05-04 01:54



Visual Studio 2008 enthält einen WPF-Designer.

Dieses Video könnte von Interesse sein: Erstellen Sie in Visual Studio 2008 eine C # -WPF-Anwendung 


0
2018-04-27 05:01



Der XAML-Teil einer WPF-Anwendung ist vage eine Ersetzung der WinForm.Designer.cs-Datei in WinForms.

Das WPF-Modell weist ein besseres Design für die Benutzeroberfläche und die einzelnen Steuerelemente auf, wodurch viele der Winform-Fehler behoben werden und Sie (hoffentlich) zu einem besseren Konzept für die Trennung von Bedenken führen.


0
2018-04-27 05:03



Ich fand XAML am Anfang auch etwas kompliziert, aber als ich mich daran gewöhnt habe, fand ich es ziemlich einfach (sobald man die grundlegenden Steuerelemente kennt). Eines der besten Dinge ist Databinding.

Wenn ich eine WPF-Anwendung schreibe, verwende ich sie normalerweise für so ziemlich alles auf meiner Benutzeroberfläche. Das Binden von Steuerelementen an Befehle und Eigenschaften eines Ansichtsmodells kann die Präsentation vollständig vom Design trennen. Ich habe normalerweise keine einzige Codezeile in meinem Code-Behind. Das macht meine ViewModel- / Business-Logik-Objekte leicht testbar und völlig unabhängig von jeder visuellen Darstellung, die wiederum leicht ersetzt werden kann.


0
2018-04-27 08:02



WPF sollte der Traum jedes WinForms-Programmierers sein: Statt prozedural alles zu tun, können Sie sagen, was die Steuerelemente sind, wo Sie sie platzieren, wie sie aussehen und wie sie sich in XAML verhalten, während Sie sie anpassen können Verhalten im "Code dahinter". Oh, und der Designer kann aufgrund der deklarativen Natur von XAML jetzt viel mehr für Sie tun als zuvor.


0
2018-04-27 05:16



Hier versuche ich in sehr einfachen, naiven Worten auf einige der WPF-Fragen zu antworten, mit denen Anfänger / Winforms-Entwickler konfrontiert sind und mit denen ich konfrontiert wurde, als ich mit WPF anfing. Es gibt viele Artikel und Tutorials im Internet, die genügend Wissen vermitteln, aber es ist schwierig, Antworten auf sehr einfache Fragen zu finden. Ich versuche es hier anzusprechen.

Was ist WPF?

Windows Presentation Foundation als Erweiterung; Es ist ein "Präsentationssystem" zum Erstellen von Windows-Anwendungen. Wenn Sie ein Winforms-Entwickler sind, ist der Hauptunterschied, den Sie in WPF finden würden, dass der Designer aussieht. Im Gegensatz zu Winforms ist der Designer-Code nicht der C # -Code, sondern der XAML-Code.

Warum WPF?

Nun, der Hauptgrund dafür, dass WPF gegenüber den Winforms bevorzugt wird, ist, dass WPF eine reichhaltige Benutzeroberfläche bietet. Abgesehen davon gibt es viele weitere Vorteile, die WPF bietet, es ist in vielen Tutorials im Internet klarer verfügbar. Es ist eine vektorbasierte Rendering-Engine. Wenn man nur die Benutzeroberfläche einer Winform-Anwendung mit einer WPF-Anwendung vergleicht, wäre der Unterschied in Bezug auf Aussehen und Verhalten ziemlich klar.

Was ist MVVM?

MVVM ist ein Muster, das bei der Entwicklung der Anwendungen angepasst wird. Es wird als "Model View View Model" erweitert. Grundsätzlich haben wir während der Strukturierung des Projekts einen Modellordner, unter dem alle Modelldateien (.cs) platziert würden, unter dem View Model Ordner wären alle Viewmodel Dateien (.cs) platziert und unter dem View-Ordner würden alle View-Dateien (.xaml) platziert werden. Wenn MVVM verwendet wird, wird kein Code dahinter stehen. Das bedeutet, dass die Datei .xaml.cs außer der automatisch erstellten Methode keinen Code enthält.

Modell : Model hat den Geschäftslogikteil, der das Ansichtsmodell mit den Daten unterstützt, die letztendlich in der Ansicht dargestellt werden.

Ansichtsmodell : Jede Ansicht würde ein Ansichtsmodell haben. Viewmodel würde die INotifyPropertyChanged-Schnittstelle implementieren und hätte alle Eigenschaften, die an die entsprechende Ansicht gebunden sind. View Model ist nicht mit einer Geschäftslogik geladen, und die Verantwortung liegt beim Modell.

Aussicht: View ist nichts anderes als die XAML-Datei, in der das Fenster entworfen wurde. XAML ist eine Auszeichnungssprache. In WPF wird im Gegensatz zu Winforms jedes Steuerelement mit einer Abhängigkeitseigenschaft verknüpft, die entweder vordefiniert oder benutzerdefiniert ist.

Warum MVVM?

Wann immer eine Anwendung in WPF entwickelt wird, ist MVVM nützlich. Einer der größten Vorteile der Verwendung von MVVM ist, dass es eine UI-unabhängige Einheitsprüfung ermöglicht, da während der Komponententests kein Code vorhanden ist und keine UI-bezogenen Objekte benötigt werden und daher eine 100% ige Codeabdeckung möglich ist. Im Komponententest können "Befehle" (suchen Sie nach Befehlen in WPF) vom Benutzer übergeben werden, um einen bestimmten Anwendungsfall zu testen.

Ist es ein Mandat oder absolut notwendig, mit MVVM zu arbeiten, wenn Sie mit WPF arbeiten?

Ich würde nein sagen, es ist nicht obligatorisch mit MVVM zu gehen, wenn man mit WPF arbeitet, aber es hängt von der Anforderung ab. Man muss in den Vorteil schauen, den MVVM bietet und dann entscheiden, ob man damit geht oder nicht. MVVM ergänzt die Komplexität in den ersten Tagen der Entwicklung, aber letztendlich kommt es mit seinen Vorteilen. Wenn die vollständige Anwendung in winforms ist und nur ein kleines Modul, eher ein kleines Feature in WPF entwickelt wird, dann ist es nicht notwendig, MVVM zu folgen, man kann glücklicherweise Code haben und die reichhaltige Benutzeroberflächenerfahrung erhalten. Wieder würde ich es wiederholen, hängt vollständig von der Art der Anforderung ab.

Kann ich mehrere Ansichtsmodelle für eine einzelne Ansicht / mehrere Ansichten für ein einzelnes Ansichtsmodell haben?

Dies ist eine Frage, auf die ich in keiner .net-Community eine klare Antwort habe. Vor allem als wir sahen, dass die Hauptabsicht von MVVM darin besteht, eine 100% ige Codeabdeckung zu erreichen, ist es offensichtlich, dass wir jedes Viewmodel unabhängig testen werden und somit ein komplettes Formular getestet wird. Wenn man dies im Blick hat, ist es besser, sich für einen View-View-Model-Ansatz zu entscheiden. Wir können immer zwischen den Viewmodels kommunizieren, wenn es notwendig ist, indem Sie MVVM Light Messenger oder andere Mittel verwenden, die dies erleichtern.

Was ist der Unterschied zwischen Ansichtsmodell und Modell?

Dies ist eine Frage, die die Anfänger immer haben würden, da sie keinen großen Unterschied zwischen den beiden finden. Hier ist der Unterschied: - Modell ist nichts anderes als eine Klasse, die über die Datenmethoden verfügt, um die Daten zu modifizieren, die im Ansichtsmodell verwendet und letztlich mit der Ansicht verknüpft werden. ViewModel hat nur die Eigenschaften, die an die Ansicht gebunden werden. In den Methoden get oder set kann man eine Methode im Modell aufrufen, um die Daten zu erhalten. Auch dieses Modell ist für dieses bestimmte Ansichtsmodell. Jetzt können Sie entscheiden, ob Sie wirklich eine Modellklasse benötigen. Wenn es keine schwere Geschäftslogik gibt, können Sie eine Modellklasse vermeiden und sie in das Ansichtsmodell einfügen, aber die sauberere Methode wäre die Verwendung einer Modellklasse.

Kann ich in MVVM ein Ansichtsmodell oder eine Modellklasse für eine Ansicht überspringen?

Auch hier kommt es auf die oben erwähnte Anforderung an. Wenn es keine schwere Geschäftslogik gibt, können Sie eine Modellklasse vermeiden und sie in das Ansichtsmodell einfügen. Der sauberere Ansatz wäre jedoch die Verwendung einer Modellklasse.


0
2018-06-05 06:24