Bitte beachten Sie zunächst, dass es bei dieser Frage nicht um WPF vs. WinForms geht.
Was sind die höchsten Vorteile, die Microsoft dazu veranlasst haben, XAML zugunsten des „alten“ Ansatzes zur Generierung von kompilierbarem C # -Code zu erfinden?
Mein Eindruck ist, dass andere Entwickler viele Nachteile zu finden scheinen, aber Microsoft hat sich trotzdem dafür entschieden, was bedeuten muss, dass es einen Vorteil gibt, den ich nicht sehe. Ich möchte, dass Sie mir erklären, was ich vermisse.
language-design
xaml
Timwi
quelle
quelle
Antworten:
Der größte Vorteil von XAML besteht darin, dass Sie Ihre Benutzeroberfläche deklarativ beschreiben können. Das heißt, Sie sagen nicht so sehr "Erstellen Sie eine Box, ändern Sie jetzt die Größe", sondern "Erstellen Sie eine Box und übrigens, sie hat diese Größe".
Der zweite Punkt, an dem XAML glänzt, ist, dass es Bindungen wirklich ausnutzt. Zum Beispiel:
In Ihrem Ansichtsmodell können Sie Ihrem Unternehmen nachgehen und IsBusy auf wahr oder falsch setzen. Wenn es sich ändert, wechselt der aktivierte Status der Schaltfläche automatisch hin und her.
Als komplexeres Beispiel:
In diesem Beispiel binden wir an eine Liste (Optionen) und erstellen für jedes Element ein Element in einem Listenfeld. Das Coole dabei ist, dass beim Hinzufügen oder Entfernen von Elementen zur Liste die Benutzeroberfläche automatisch mit dem Status unserer Liste synchronisiert wird. Wenn wir das Kontrollkästchen für jedes Element aktivieren, werden die zugrunde liegenden Objekte automatisch aktualisiert, um mit der Benutzeroberfläche übereinzustimmen. Mit leistungsstarken Tools wie diesen habe ich Benutzeroberflächen in einem Bruchteil der Zeit gehackt, die ich für die Verkabelung aller Ereignisse in einer WinForms-App benötigt hätte.
Im Allgemeinen bedeutet dies alles, dass Sie Ihre Benutzeroberfläche in einem deklarativen Format schreiben können. Dies ist ein massiver Produktivitätsgewinn. Allerdings muss ich erwähnen, dass dies kostenpflichtig ist. Sie werden wahrscheinlich mehr Leistung aus einer WinForms-App herausholen, da der Code weniger verallgemeinert wird. Aber wenn Sie nicht etwa 40.000 Zeilen in einem Datenraster anzeigen, werden Sie mit XAML wahrscheinlich keine große Verlangsamung bemerken.
Es sollte auch erwähnt werden, dass andere UI-Bibliotheken dasselbe Ziel ohne XML erreichen. QT verwendet beispielsweise Json (http://labs.qt.nokia.com/2009/05/13/qt-declarative-ui/).
quelle
Die 8 Vorteile von XAML für UI und darüber hinaus
Ich betrachte XAML als "Zwischensprache" der Benutzeroberfläche. Sie können es mit jeder Programmiersprache und auf verschiedenen Plattformen verwenden. Es ermöglicht eine sprach-, plattform- und geräteunabhängige Beschreibung der Benutzeroberfläche.
quelle
Durch die Verwendung von XML erhalten Sie Metadaten in einem Format, das von einer Vielzahl von Parsern und Parsing-Tools unterstützt wird. Zumindest theoretisch erlaubt dies jedem, mit einer beliebigen Sprache Meta-Programme dagegen durchzuführen.
In der Praxis lassen Sie XML mit einem offeneren Standard erscheinen. Sie können argumentieren, dass es nur ein Markup wie ein Browser ist, aber einfacher zu analysieren ist.
Dies sind echte Vorteile, aber in der Praxis ist außerhalb der XAML zu viel los, als dass die Vorteile fürchterlich wichtig wären.
quelle
"<While Condition="a == true"><Print>Hi!</Print></While>"
jemand? Das ist offensichtlich grausam; Warum ist die Darstellung der Benutzeroberfläche Ihrer Meinung nach anders?XAML wurde entwickelt, um einfach eine Hierarchie von Objekten darzustellen und nicht nur für GUI wie XPS und WF. Die Verwendung von XAML zum Erstellen von Anwendungen hilft Ihnen bei der Bereitstellung von Rich Internet Applications (RIA) sowie Rich Desktop-Anwendungen.
Die Verwendung von XAML als textbasierte deklarative Darstellung der GUI bringt die MS-Entwicklungstools anderen Technologien, die in der Branche als Standard gelten, wie z. B. HTML, einen Schritt näher.
Einige der Hauptfunktionen von XAML (über Windows Forms) sind:
Mit XAML können SVG-Bilder (Scalable Vector Graphics) und Transformationen gezeichnet werden. Einer der Vorteile von Vektorgrafiken besteht darin, dass sie auf jede Größe skaliert werden können, ohne an Qualität zu verlieren, sodass Sie sich keine großen Sorgen um die Auflösung des Computers des Benutzers machen müssen.
Windows Forms litten im Allgemeinen unter einer eingeschränkten Unterstützung für die automatische Platzierung von Steuerelementen aufgrund von Windows-Größenänderungen und Änderungen in der GUI-Oberfläche (z. B. wenn neue Steuerelemente hinzugefügt oder entfernt wurden). Steuerelemente werden durch explizite Angabe von Zeilen- und Spaltenwerten für jedes Steuerelement über die GUI oder den Programmcode positioniert. Während XAML dieses Verhalten zulässt, bietet es eine einfachere Möglichkeit, dieses Problem zu lösen, indem das Stack Control-Steuerelement und das Wrap Panel-Steuerelement bereitgestellt werden.
In XAML können Sie mithilfe der Verschachtelung neue Steuerelemente aus vorhandenen direkt in der XAML erstellen. Sie können ein Bildsteuerelement zusammen mit einem Stapelbedienfeld innerhalb des Schaltflächensteuerelements verschachteln, um einen neuen Schaltflächentyp zu erstellen, dh eine Schaltfläche mit einem Bild. Da dieses Steuerelement in XAML erstellt wird, müssen Sie keine separate DLL erstellen, um es wie in Windows Forms zu verwenden. Beispiel:
Mit Styling und Vorlagen können Sie das Erscheinungsbild von Steuerelementen auf mehreren Ebenen anpassen, ähnlich wie bei CSS und HTML. Keine prozedurale Programmierung erforderlich. Eine Änderung kann sich auf die gesamte Benutzeroberfläche auswirken.
XAML ermöglicht erweiterte Datenbindungstechniken, die in Windows Forms nicht verfügbar sind. Sie können sogar ein Steuerelement an die Datenwerte eines anderen binden.
XAML bietet ein integriertes Navigationsframework, das Sie verwenden oder durch andere Frameworks ersetzen können. Tatsächlich sind WPF, Silverlight und XAML so konzipiert, dass sie das MVVM-Muster nutzen, das Sie mit Windows Forms nicht genau erreichen können.
Mit der Einführung von XAML konnte der Code hinter den Dateien stärker von den Schnittstellendesigndateien isoliert werden. Natürlich besteht immer noch die Abhängigkeit einiger Namen. Die Tatsache, dass XAML eine textbasierte deklarative Sprache ist, die XML und HTML ähnelt und keinen Compiler erfordert, ermöglicht es Schnittstellenentwicklern, separate XAML-Dateien zu erstellen, die später in den Code hinter den Dateien integriert werden. Dies ist anders als bei Windows-Formularen, bei denen die GUI als Projektcode im Projekt eng miteinander verbunden ist. Designer, die XAML verwenden, können Visual Studio sogar verlassen und das MS Expression Blend-Tool zum Erstellen ihrer GUI verwenden. MS Expression Blend wurde eher für Designer als für Programmierer erstellt.
XAML bietet erweiterte native Techniken für die Animation und Videoanzeige, ohne dass Tools von Drittanbietern erforderlich sind.
XAML sollte die Entwicklung von Windows-basierter Software und Webseiten enger gestalten als die Verwendung von ASP.NET und Windows Forms. Silverlight und WPF verwenden beide XAML (obwohl es einige Unterschiede gibt, aber ein großer Teil der Erfahrung übertragbar ist).
Ein SDK für XAML enthält interessante Steuerelemente und ermöglicht es Ihnen unter anderem, die Präsentation im Assistenten- / Storyboard-Stil zu unterstützen, ohne ein Tool eines Drittanbieters zu verwenden.
quelle
Theoretisch ist jede neue Sprache etwas, das Sie lernen müssen. Sehr viele Menschen würden es vorziehen, viele / mehrere Sprachen zu sprechen - da dies als Sprachreichtum angesehen wird. Dies ist vorhanden und bezieht sich auf natürliche Sprachen, ist jedoch für Programmiersprachen nicht erforderlich.
Ich selbst programmiere in ziemlich vielen Sprachen, einschließlich Batch-Dateien, Perl, Lua, Python, C ++ und C #. Erinnere ich mich an alle? Nein, ich kann mit einer anderen Sprache wechseln, aber es braucht Zeit. Schreiben Sie jetzt in C # und wechseln Sie dann zu C ++. Je nach Programmiersprache und "Dialekt" können Sie leicht verwechseln, ob es sich um NULL, null, nil oder nullptr handelt. (c ++ normal, c ++ verwaltet)
xaml ist xml "Dialekt". Ist es leicht zu lernen? basierend auf ziemlich vielen Fragen in anderen Foren würde ich nein sagen.
Ersetzt es C #? Nein.
Die Antwort liegt auf der Hand - ich würde es vorziehen, eine Programmiersprache zu haben, die gut gestaltet ist (C # - z. B. Datentypreflexion), eine gute Leistung (wie C ++) und skriptfähig (C # -Skript, C ++ / cling oder noch besser) hat.
Derzeit erfüllen C ++ und C # meine Anforderungen nicht vollständig, aber xaml ist ein seltsames Datenformat, das ich nicht als lernwürdig erachten würde (nur umwickeln und vor den Augen des Entwicklers verbergen).
Am Ende möchte ich die natürliche Sprache (gesprochen) mit der Programmiersprache (künstlich konstruierte Sprache) in derselben Sprache neu kombinieren - damit sie für die Kommunikation und von Programmierern verwendet werden kann - dies ist später in der Zukunft, wenn die Programmiersprache "Architektur" oder "Entwurfsmuster" werden dokumentiert.
XAML führt in der Tat einige neue, verbesserte Funktionen gegenüber Winforms ein. Es lohnt sich daher, darüber nachzudenken, sie zu verwenden. Wenn Sie jedoch möchten, dass Ihre Benutzeroberfläche vollständig dynamisch wird, muss xaml durch einen ähnlichen Laufzeitcode ersetzt werden.
Letztendlich sollte die Benutzeroberfläche einfach zu bedienen sein - und das bedeutet, dass ein Mindestmaß an Steuerelementen ähnlich aussieht (Abbrechen, OK, Verknüpfungen, gleiche Breite / Höhe usw.), was bedeutet, dass die Benutzeroberfläche mehr oder weniger automatisch generiert werden kann.
Übrigens - ist es möglich, direkt in xaml C # -Code einzubetten? Metadaten, Zeichenfolge, Kommentare?
Es ist manchmal ordentlich, Sprache so zu missbrauchen oder zu missbrauchen, wie es sich niemand vorgestellt hat. Perl macht das oft, aber ich bevorzuge eine sauberere Syntax als eine kryptische. Aber C # gegen xaml - ich würde C # wählen.
quelle
Ein Vorteil ist, dass die XAML in anderen Anwendungen verwendet werden kann. Ein gutes Beispiel ist, dass die XAML von einem Designer / Künstler in Blend entwickelt werden kann, während die Interna (Code dahinter) im Visual Studio codiert werden.
Ich glaube, es war der Versuch von Microsoft, das UI-Markup vom Code dahinter zu trennen und es zu ermöglichen, dass die Benutzeroberfläche von Nicht-Programmierern mit einem Tool wie Blend codiert wird.
Aber viele Geschäfte haben Blend nicht, so dass es für viele von uns wie eine Neuerfindung des Rades aussieht.
Hier sind 8 Punkte, die von jemandem gekauft wurden, der näher am Windows-Client ist:
8 XAML-Vorteile
quelle
Ein Punkt, den ich in vielen Antworten nicht sehe, ist, dass xaml den Kern der wpf-Desgin-Prinzipien einschließt. Trennen Sie die visuelle Darstellung und die visuelle Logik (in der Praxis ist dies auf Trigger und dergleichen beschränkt, aber unter der Annahme, dass keine benutzerdefinierten Steuerelemente vorhanden sind, ist dies oft alles, was Sie benötigen) von der Geschäftslogik. Dies gilt auch für Paare, wie andere mit einer ausdrucksstarken Syntax für das Binden, angehängte Eigenschaften und andere Metadaten festgestellt haben, die im normalen C # -Code ausführlicher sein können.
Persönlicher gesagt, eine Sache, die ich an xaml gut finde, ist, dass es besser die visuelle Hierarchie von Steuerelementen darstellt als nur Code zu generieren. Auf einen Blick ist leicht zu erkennen, wie ein Steuerelement mit den anderen zusammenhängt.
quelle