WPF - XAML Übersicht
Eines der ersten Dinge, auf die Sie bei der Arbeit mit WPF stoßen werden, ist XAML. XAML steht für Extensible Application Markup Language. Es ist eine einfache und deklarative Sprache, die auf XML basiert.
In XAML ist es sehr einfach, Eigenschaften von Objekten mit hierarchischen Beziehungen zu erstellen, zu initialisieren und festzulegen.
Es wird hauptsächlich zum Entwerfen von GUIs verwendet, kann jedoch auch für andere Zwecke verwendet werden, z. B. um den Workflow in Workflow Foundation zu deklarieren.
Grundlegende Syntax
Wenn Sie Ihr neues WPF-Projekt erstellen, wird standardmäßig ein Teil des XAML-Codes in MainWindow.xaml angezeigt (siehe unten).
<Window x:Class = "Resources.MainWindow"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
Title = "MainWindow" Height = "350" Width = "525">
<Grid>
</Grid>
</Window>
Die obige XAML-Datei enthält verschiedene Arten von Informationen. In der folgenden Tabelle wird kurz die Rolle der einzelnen Informationen erläutert.
Information | Beschreibung |
---|---|
<Fenster | Es ist das öffnende Objektelement oder der Container der Wurzel. |
x: Class = "Resources.MainWindow" | Es ist eine Teilklassendeklaration, die das Markup mit dem dahinter definierten Teilklassencode verbindet. |
xmlns = "http://schemas.microsoft.com/win fx / 2006 / xaml / Präsentation" | Ordnet den Standard-XAML-Namespace für den WPF-Client / das WPF-Framework zu |
xmlns: x = "http://schemas.microsoft.com/w infx / 2006 / xaml" | XAML-Namespace für die XAML-Sprache, der sie dem Präfix x: zuordnet |
> | Ende des Objektelements der Wurzel |
<Grid> </ Grid> |
Es startet und schließt Tags eines leeren Rasterobjekts. |
</ Windows> | Objektelement schließen |
Die Syntaxregeln für XAML ähneln fast XML. Wenn Sie sich ein XAML-Dokument ansehen, werden Sie feststellen, dass es sich tatsächlich um eine gültige XML-Datei handelt, eine XML-Datei jedoch nicht unbedingt eine XAML-Datei ist. Dies liegt daran, dass in XML der Wert der Attribute eine Zeichenfolge sein muss, während es sich in XAML um ein anderes Objekt handeln kann, das als Eigenschaftselementsyntax bezeichnet wird.
Die Syntax eines Object-Elements beginnt mit einer linken spitzen Klammer (<), gefolgt vom Namen eines Objekts, z. B. Button.
Definieren Sie einige Eigenschaften und Attribute dieses Objektelements.
Das Objektelement muss durch einen Schrägstrich (/) gefolgt von einer rechtwinkligen Klammer (>) geschlossen werden.
Beispiel eines einfachen Objekts ohne untergeordnetes Element
<Button/>
Beispiel eines Objektelements mit einigen Attributen
<Button Content = "Click Me" Height = "30" Width = "60" />
Beispiel für eine alternative Syntax definieren Eigenschaften (Eigenschaftselementsyntax)
<Button>
<Button.Content>Click Me</Button.Content>
<Button.Height>30</Button.Height>
<Button.Width>60</Button.Width>
</Button>
Beispiel für ein Objekt mit einem untergeordneten Element: StackPanel enthält Textblock als untergeordnetes Element
<StackPanel Orientation = "Horizontal">
<TextBlock Text = "Hello"/>
</StackPanel>
Warum XAML in WPF?
XAML ist nicht nur das bekannteste Feature von WPF, sondern auch eines der am meisten missverstandenen Features. Wenn Sie WPF ausgesetzt sind, müssen Sie von XAML gehört haben. Beachten Sie jedoch die folgenden zwei weniger bekannten Fakten zu XAML:
- WPF benötigt kein XAML
- XAML benötigt kein WPF
Sie sind in der Tat trennbare Teile der Technologie. Um zu verstehen, wie das sein kann, schauen wir uns ein einfaches Beispiel an, in dem eine Schaltfläche mit einigen Eigenschaften in XAML erstellt wird.
<Window x:Class = "WPFXAMLOverview.MainWindow"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
Title = "MainWindow" Height = "350" Width = "604">
<StackPanel>
<Button x:Name = "button" Content = "Click Me" HorizontalAlignment = "Left"
Margin = "150" VerticalAlignment = "Top" Width = "75" />
</StackPanel>
</Window>
Wenn Sie XAML nicht in WPF verwenden, können Sie das gleiche GUI-Ergebnis auch mit der prozeduralen Sprache erzielen. Schauen wir uns das gleiche Beispiel an, aber dieses Mal erstellen wir eine Schaltfläche in C #.
using System.Windows;
using System.Windows.Controls;
namespace WPFXAMLOverview {
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window {
public MainWindow() {
InitializeComponent();
// Create the StackPanel
StackPanel stackPanel = new StackPanel();
this.Content = stackPanel;
// Create the Button
Button button = new Button();
button.Content = "Click Me";
button.HorizontalAlignment = HorizontalAlignment.Left;
button.Margin = new Thickness(150);
button.VerticalAlignment = VerticalAlignment.Top;
button.Width = 75;
stackPanel.Children.Add(button);
}
}
}
Wenn Sie entweder den XAML-Code oder den C # -Code kompilieren und ausführen, wird dieselbe Ausgabe wie unten gezeigt angezeigt.
Aus dem obigen Beispiel geht hervor, dass die gleichen Aufgaben, die Sie in XAML zum Erstellen, Initialisieren und Festlegen von Eigenschaften von Objekten ausführen können, auch mit Code ausgeführt werden können.
XAML ist nur eine weitere einfache Möglichkeit, UI-Elemente zu entwerfen.
Mit XAML bedeutet dies nicht, dass Sie nur UI-Elemente entwerfen können. Sie können die Objekte entweder in XAML deklarieren oder mithilfe von Code definieren.
XAML ist optional, aber dennoch das Herzstück des WPF-Designs.
Das Ziel von XAML ist es, visuellen Designern die Möglichkeit zu geben, Elemente der Benutzeroberfläche direkt zu erstellen.
WPF soll es ermöglichen, alle visuellen Aspekte der Benutzeroberfläche vom Markup aus zu steuern.