90 likes | 200 Views
Windows Presentation Foundation WS 2013/14 Prof. Dr. Herrad Schmidt. Kapitel 2 XAML. XAML (1) s.a. http://msdn.microsoft.com/en-us/library/ms747122(VS.90).aspx XAML ist eine XML-basierte Beschreibungssprache zur Erstellung von Benutzeroberflächen.
E N D
Windows PresentationFoundationWS 2013/14Prof. Dr. Herrad Schmidt Kapitel 2 XAML
XAML (1) s.a. http://msdn.microsoft.com/en-us/library/ms747122(VS.90).aspx • XAML ist eine XML-basierte Beschreibungssprache zur Erstellung von Benutzeroberflächen. • Ein XAML-Dokument enthält XML-Elemente und XML-Attribute. • Die Deklaration xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentationordnet den Gesamt-Windows PresentationFoundation (WPF)-Namespace als Standard zu. In der Regel hat der WPF-Namespace keinen Präfix. • Die Deklarationxmlns:x=http://schemas.microsoft.com/winfx/2006/xamlordnet den separaten Extensible Application Markup Language (XAML)-Namespace zu und bezeichnet in mit dem Präfix x (in der Regel).
XAML (2) • Die Deklarationxmlns:MeinNS="clr-namespace:MeinNamespace;assembly=MeinProjekt" ordnet benutzerdefinierte Klassen und Assemblies zu. Auf diese Klassen kann dann mit MeinNS:Klassenname zugegriffen werden. • Zur Laufzeit werden aus den XML-Elementen in XAML Objekte der entsprechenden .NET-Klassen erzeugt (XAML-Mapping). • Die XML-Attribute werden Properties (Property-Attribut) bzw. Events (Event-Attribut) der entsprechenden Klassen zugeordnet. • Content Property (Default Property)Der Inhalt eines Elements wird dem Content Property der Klasse zugeordnet. • Für den Zugriff auf ein Element, das von der Klasse FrameworkElement erbt, kann das Attribut Name belegt werden. Besitzt ein Element in XAML die Property Name nicht, kann das Attribut x:Name als Bezeichner für das Element verwandt werden.
XAML (3) • <Window></Window> ist der Stammtag (Wurzelelement).s.a. http://msdn.microsoft.com/en-us/library/system.windows.window.aspx • Der Stammtag enthält die Namensräume (WPF, XAML, CLR-Namensräume und Assemblies). • Der Inhalt von <Window> wird über das Property content vom Typ System.Object festgelegt. Es kann sich also um ein beliebiges Objekt handeln. • Üblicherweise besteht der Content aus dem LayoutcontainerPanel (abstract) mit den Subklassen DockPanel, StackPanel, Grid, Canvas,… Sie besitzen jeweils die Eigenschaft Children, über die sie ihre Kindelemente verwalten.
XAML-Syntax (1) s.a. http://msdn.microsoft.com/en-us/library/ms788723(VS.90).aspx • Objektelementsyntax:<Button/> • XAML Content Syntax:<TextBox>Mein Text</TextBox>Der Inhalt wird dem Standardattribut zugewiesen. • Attributsyntax:<Button Name="btnA" Click="btnA_Click" Content="OK"/>Durch die Deklaration eines Attributs wird der Wert für eine Eigenschaft (property) festgelegt. Der Attributname muss mit dem CLR-Membernamen der Eigenschaft übereinstimmen. Die Werte werden als String deklariert und werden automatisch von einem Typkonverter in den vom property benötigten Datentyp umgewandelt, z.B. String „black“ in Objekt vom Typ Brush.
XAML-Syntax (2) • Property-Element-Syntax:Für eine Property wird ein eigenes XML-Element (Property-Element) erstellt. Dieses wird einer .NET Property zugeordnet. Es darf keine XML-Attribute haben. <Button Name="btnA" Click="btnA_Click" ><Button.Background> <SolidColorBrush Color="Black"/> </Button.Background> <Button.Content>OK</Button.Content> </Button> • Attached-Property-Syntax:Attached-Properties werden in einer Klasse definiert, werden aber auf unmittelbar übergeordnete Objekte anderer Klassen bezogen. Z.B.: <DockPanel><Button DockPanel.Dock="Top">Attached Property (oben)</Button> … </DockPanel>
XAML Markup-Extensions • Die Markup Extensions werden zum Beispiel eingesetzt, um den Wert eines Attributs an den Wert des Attributs eines anderen Elements zu binden oder mit einer Datenquelle synchron zu halten (Data binding). <TextBox Name="txtEingabe"></TextBox> <TextBox Name="txtWiederholung" Text="{Binding ElementName=txtEingabe,Path=Text}"> </TextBox> • Außerdem kann ein Verweis auf Ressourcen hergestellt werden. • Der Ausdruck für die XAML Markup Extension steht in geschweiften Klammern. • XAML-spezifische Markup-Extensions:x:Array, x:Null, x:Static, x:Type • WPF-spezifische Markup-Extensions:Binding, DynamicResource, StaticResource, TemplateBinding
XAML-Spracherweiterungen Erweiterung um Attribute, die keine Entsprechung in einer Klasse besitzen, sondern Informationen für den Parser bzw. Compiler liefern. • x:ClassBeziehung zwischen dem Wurzelelement im XAML-Code und der Code-Behind-Dateix:Class="Namespace.Klasse" • x:Codedefiniert einen Code-Bereich innerhalb einer XAML-Datei • x:Keyeindeutiger Name eines Elements in einer Ressource • x:Namezur Namensvergabe, falls das Element nicht über die Eigenschaft Name verfügt • und weitere …
Solution 2_XAML A_ElementeMitEigenschaftenAttribut-Syntax, Property-Syntax, Attached Property, ListBox B_xStatic_Binding_xNameBindung an ein anderes Element, x:Static, x:Name C_xArray_xKey_xType_clr-namespaceRessourcen, x:Key, x:Array, x:Type, Serialisierung, Binding