Alles was Sie über XAML wissen müssen

  • 257 views
Uploaded on

XAML ist mittlerweile auf jeder Microsoft-Plattform verfügbar: WPF, Windows-Store-Apps, Windows Phone und Silverlight. In dieser Session lernen Sie die zentralen Möglichkeiten von XAML kennen: …

XAML ist mittlerweile auf jeder Microsoft-Plattform verfügbar: WPF, Windows-Store-Apps, Windows Phone und Silverlight. In dieser Session lernen Sie die zentralen Möglichkeiten von XAML kennen: Attribute und Elemente, Namespace Mappings, Type Converter, Markup Extensions und vieles mehr.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
257
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Thomas Claudius Huber | Trivadis AG Alles was Sie über XAML wissen müssen
  • 2. Thomas Claudius Huber  Principal Consultant @ Trivadis AG  www.trivadis.com  www.thomasclaudiushuber.com  Trainer, Coach, Developer, Architect  Spezialisiert auf WPF, XAML, WinApps  Autor der umfassenden Handbücher zu WPF, Silverlight und Windows Store Apps
  • 3. Sessioninhalt  XAML Basics  Elemente und Attribute  Magie  TypeConverter  Markup Extensions  …
  • 4. XAML  Steht für eXtensible Application Markup Language  Eine XML-basierte Markup Sprache zum Instantiieren von Objekten:  Wurde sogar als Serialisierungsformat erstellt  WPF nutzt XAML als UI-Beschreibungssprache
  • 5. Warum XAML?
  • 6. Workflow mit XAML DesignerEntwickler Visual Studio Blend XAM L
  • 7. Sessioninhalt  XAML Basics  Elemente und Attribute  Magie  TypeConverter  Markup Extensions  …
  • 8. Properties setzen  Attribut-Syntax  Property-Element-Syntax  Implicit as content of element <Button Content="OK"/> <Button> <Button.Content> OK </Button.Content> </Button> <Button> OK </Button> Demo
  • 9. Properties setzen  Implizit als Inhalt des Elements  Suche via ContentPropertyAttribute  Attached-Property-Syntax <Canvas Width="300" Height="200"> <TextBox Canvas.Left="50" Canvas.Top="20" Text="Welcome"/> </Canvas> <Button> OK </Button> [ContentPropertyAttribute(„Content")] public class ContentControl:Control{...} Demo
  • 10. Klassen-Lookup  Elemente werden über XML-Namespace zugeordnet  XML-Namespace wird auf Assembly-Ebene mehreren CLR-Namespaces zugeordnet  Zuordnung findet via XmlnsDefinitionAttribute statt <Window x:Class="WpfApplication4.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" .../> Demo
  • 11. 1:1-Namespace-Mapping  Xmlns-Attribut mit Assembly  CLR-Namespace und XAML in derselben Assembly:  Objekte mit gewähltem Alias instantiieren xmlns:alias ="clr-namespace:yourCLRNamespace;assembly=yourAssembly" xmlns:alias ="clr-namespace:yourCLRNamespace" <alias:YourClass/>
  • 12. 1:n-Namespace-Mapping  XmlnsDefinitionAttribute auf Assembly nutzen  XmlnsPrefix zum Vorschlagen eines Alias  Ideal für Bibliotheken mit mehreren CLR-Namespaces
  • 13. Xmlns von XAML  x-Alias  Ist dem CLR-Namespace System.Windows.Markup zugeordnet  Enthält Compiler-Direktiven  x:Class  k:Key  x:Code  x:Name xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  • 14. Sessioninhalt  XAML Basics  Elemente und Attribute  Magie  TypeConverter  Markup Extensions  …
  • 15. TypeConverter  Margin-Property in XAML setzen  Margin-Property in C#  XAML wandelt den String «10» in ein Thickness- Objekt um <Button Margin="10" Content="Book TVD-course"/> Button btn = new Button(); btn.Margin = new Thickness(10); btn.Content = "Book TVD-course";
  • 16. TypeConverter  Thickness-Struct hat TypeConverterAttribute  XAML-Parser sucht nach diesem Attribut  ThicknessConverter wird instanstiiert und konvertiert String zu Thickness-Objekt  Eigene TypeConverter von TypeConverter ableiten [TypeConverterAttribute(typeof(ThicknessConverter))] public struct Thickness:IEquatable<Thickness>{...} Demo
  • 17. Markup Extensions  Klassem zum Erweitern von XAML:  Binding, StaticResource, …  Attribut-Syntax: mit geschweiften Klammern  Alternativ zur Attribut-Syntax auch als Objektelement <Slider x:Name="sli"/> <Button Content="{Binding Path=Value, ElementName=sli}"/> <Slider x:Name="sli"/> <Button> <Binding Path="Value" ElementName="sli"/> </Button> Demo
  • 18. XAML & Collections  IList und IDictionary werden unterstützt  Bei IList wird die Add-Methode aufgerufen  Bei IDictionary wird das x:Key-Attribut genutzt  XAML  C# <ResourceDictionary> <SolidColorBrush x:Key="redBrush" Color="Red"/> </ResourceDictionary> ResourceDictionary dictionary = new ResourceDictionary(); SolidColorBrush brush = new SolidColorBrush(); brush.Color = Colors.Red; dictionary.Add("redBrush", brush); Demo
  • 19. XAML dynamisch laden  XAML ist ein Serialisierungsformat  Lesen via XamlReader  Schreiben via XamlWriter Demo
  • 20. Sessioninhalt  XAML Basics  Elemente und Attribute  Magie  TypeConverter  Markup Extensions  …
  • 21. Danke Twitter: @thomasclaudiush Homepage: www.thomasclaudiushuber.com Mail: thomas.huber@trivadis.com Slides/Demos: www.thomasclaudiushuber.com/blog