9
Windows Presentation Foundation WS 2013/14 Prof. Dr. Herrad Schmidt Kapitel 2 XAML

Windows Presentation Foundation WS 2013/14 Prof. Dr. Herrad Schmidt

  • Upload
    faunus

  • View
    27

  • Download
    0

Embed Size (px)

DESCRIPTION

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. - PowerPoint PPT Presentation

Citation preview

Page 1: Windows  Presentation Foundation WS  2013/14 Prof. Dr. Herrad Schmidt

Windows Presentation Foundation WS 2013/14Prof. Dr. Herrad Schmidt

Kapitel 2

XAML

Page 2: Windows  Presentation Foundation WS  2013/14 Prof. Dr. Herrad Schmidt

Windows Presentation Foundation, Vorlesung Wintersemester 2013/14

Prof. Dr. Herrad SchmidtWS 13/14 Kapitel 2Folie 2

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/presentation

ordnet den Gesamt-Windows Presentation Foundation (WPF)-Namespace als Standard zu. In der Regel hat der WPF-Namespace keinen Präfix.

Die Deklarationxmlns:x=http://schemas.microsoft.com/winfx/2006/xaml

ordnet den separaten Extensible Application Markup Language (XAML)-Namespace zu und bezeichnet in mit dem Präfix x (in der Regel).

Page 3: Windows  Presentation Foundation WS  2013/14 Prof. Dr. Herrad Schmidt

Windows Presentation Foundation, Vorlesung Wintersemester 2013/14

Prof. Dr. Herrad SchmidtWS 13/14 Kapitel 2Folie 3

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.

Page 4: Windows  Presentation Foundation WS  2013/14 Prof. Dr. Herrad Schmidt

Windows Presentation Foundation, Vorlesung Wintersemester 2013/14

Prof. Dr. Herrad SchmidtWS 13/14 Kapitel 2Folie 4

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 Layoutcontainer Panel (abstract) mit den Subklassen DockPanel, StackPanel, Grid, Canvas,… Sie besitzen jeweils die Eigenschaft Children, über die sie ihre Kindelemente verwalten.

Page 5: Windows  Presentation Foundation WS  2013/14 Prof. Dr. Herrad Schmidt

Windows Presentation Foundation, Vorlesung Wintersemester 2013/14

Prof. Dr. Herrad SchmidtWS 13/14 Kapitel 2Folie 5

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.

Page 6: Windows  Presentation Foundation WS  2013/14 Prof. Dr. Herrad Schmidt

Windows Presentation Foundation, Vorlesung Wintersemester 2013/14

Prof. Dr. Herrad SchmidtWS 13/14 Kapitel 2Folie 6

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>

Page 7: Windows  Presentation Foundation WS  2013/14 Prof. Dr. Herrad Schmidt

Windows Presentation Foundation, Vorlesung Wintersemester 2013/14

Prof. Dr. Herrad SchmidtWS 13/14 Kapitel 2Folie 7

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

Page 8: Windows  Presentation Foundation WS  2013/14 Prof. Dr. Herrad Schmidt

Windows Presentation Foundation, Vorlesung Wintersemester 2013/14

Prof. Dr. Herrad SchmidtWS 13/14 Kapitel 2Folie 8

XAML-Spracherweiterungen

Erweiterung um Attribute, die keine Entsprechung in einer Klasse besitzen, sondern Informationen für den Parser bzw. Compiler liefern.

x:Class Beziehung zwischen dem Wurzelelement im XAML-Code und der Code-Behind-Dateix:Class="Namespace.Klasse"

x:Code

definiert einen Code-Bereich innerhalb einer XAML-Datei

x:Key

eindeutiger Name eines Elements in einer Ressource

x:Name

zur Namensvergabe, falls das Element nicht über die Eigenschaft Name verfügt

und weitere …

Page 9: Windows  Presentation Foundation WS  2013/14 Prof. Dr. Herrad Schmidt

Windows Presentation Foundation, Vorlesung Wintersemester 2013/14

Prof. Dr. Herrad SchmidtWS 13/14 Kapitel 2Folie 9

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