61
1 C# für Einsteiger Modul 10: Oberflächen mit WPF © 2009 eden market Autor: Anton Kölbl

C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99 3 Einleitung

Embed Size (px)

Citation preview

Page 1: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

1

C# für EinsteigerModul 10: Oberflächen mit WPF

© 2009 eden market

Autor: Anton Kölbl

Page 2: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

2

Gliederung

1. Einleitung

2. XAML

3. Grafik

4. Databinding

Page 3: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

3

Einleitung

Die Windows Presentation Foundation WPF sindwichtig(st)er Bestandteil von .NET 3.0; früher waren die Bezeichnungen Avalon und WinFX gebräuchlich.

Sie stellen ein API für anspruchsvolle Benutzeroberflächenzur Verfügung. Möglich sind z.B.

• 3D-Darstellungen

• Abspielen von Videos (mit Windows Media Player 10)

• Datenbindung

• Animationen

Page 4: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

4

Einleitung

Nur noch Betriebssysteme ab XP werden unterstützt.

Technisch wird Ballast abgeworfen:

• Kein Aufsatz auf Windows SDK wie Windows.Forms

• Komponenten werden direkt über WPF gezeichnet

• Layout wird in XML definiert

• Weitergehende Verwendung von Ressourcen

• Grafik auf Vektorbasis unabhängig von Auflösung

• WPF/E (“Everywhere”) durch Silverlight auch für Browser

Page 5: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

5

Einleitung

Page 6: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

6

Einleitung

Längere Zeit werden die Windows.Forms und WPF parallel existieren. WPF sollte v.a. für sehr anspruchsvolle(Multimedia-)Oberflächen eingesetzt werden.

Grafik kann dann separat vom Code durch Designer entworfen werden.

Hierzu neue Expression-Produktreihe von Microsoft.

Speziell Expression Blend für XAML.

Page 7: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

7

Einleitung

Page 8: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

8

Einleitung

Für die Entwicklung gibt es drei Varianten:

• Code

• XAML

• XAML+Code

Ab einer gewissen Projektgröße ist nur noch die dritteVariante sinnvoll.

Page 9: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

9

Einleitung

Vorgehensweise nur mit Code:

• Projekttyp WPF Application, .xaml-Dateien löschen

• Klasse von System.Windows.Window ableiten

class Window1: Window {

public Window1()

{ Title = "Ein erstes Fenster";

Width = 200; Height = 100;

}

[STAThread()]

public static void Main()

{ new Application().Run(new Window1()); }

}

Page 10: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

10

Einleitung

Vorgehensweise nur mit XAML:

• selber Projekttyp, .cs-Dateien löschen

• jetzt Informationen in 2 XML-Dateien

<WindowWindowWindowWindow x:Class="WpfApplicationXaml.Window1"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="Fenster aus XAML" Height="300" Width="300" />

<ApplicationApplicationApplicationApplication x:Class="WpfApplicationXaml.App"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

StartupUri="Window1.xaml"StartupUri="Window1.xaml"StartupUri="Window1.xaml"StartupUri="Window1.xaml" />

Page 11: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

11

Einleitung

Vorgehensweise Code und XAML gemischt:

• Projekttyp WPF Application

• erzeugt– C# für Logik (Code-behind)

– XAML für UI

Page 12: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

12

Gliederung

1. Einleitung

2. XAML

3. Grafik

4. Databinding

Page 13: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

13

XAML

XAML ist ein neuer XML-Dialekt

Ziel:

• Trennung von Logik und UI

• UI wird von Designer erzeugt

• XAML kann von Tools generiert werden

• dann z.B. Import in Visual Studio

Zwei Namensräume werden benötigt:xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Page 14: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

14

XAML

XAML definiert den Inhalteines Fensters:

Container gruppierenmehrere Komponenten

<Window>

<StackPanel>

<Button Content="Click Me"/>

</StackPanel>

</Window>

Page 15: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

15

XAML

Events können beim Button direkt durch Doppelclickerzeugt werden.

Methode wird in Code-behind-Klasse erzeugt:

private void Button_Click(object sender, RoutedEventArgs e)

{

MessageBox.Show("Test");

}

Page 16: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

16

XAML

Properties und Events können oft direkt als XML-Attribute angegeben werden; dies ist aber nur bei Strings möglich.

<Button Content="Click Me" ClickClickClickClick="Button_Click" />

Page 17: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

17

XAML

Eine alternative Syntax mit Unterelementen ist immermöglich.

<Button>

<Button.BackgroundButton.BackgroundButton.BackgroundButton.Background><SolidColorBrush Color="Blue"/> </Button.Background> <Button.ForegroundButton.ForegroundButton.ForegroundButton.Foreground> <SolidColorBrush Color="Red"/> </Button.Foreground> <Button.ContentButton.ContentButton.ContentButton.Content> This is a button </Button.Content>

</Button>

Page 18: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

18

XAML

Manche komplexen Werte können über TypeConverterautomatisch umgewandelt werden. Folgende Variantensind äquivalent:

<Button Margin="10,20,10,30" Content="Hallo"/>

<Button Content="Hallo">

<Button.Margin>

<Thickness Left="10" Top="20" Right="10" Bottom="30"/> </Button.Margin>

</Button>

Page 19: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

19

Übung 10, Aufgabe 1

Page 20: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

20

XAML

Properties stammen oft von (evt. abstrakten) Basisklassen, deshalb ist normale XML-Validierung mitXAML nicht möglich -> spezielle Tools notwendig

Einige Properties können an alle Komponentenangehängt werden -> Elternelemente werden nichtüberfrachtet

<DockPanel>

<Button DockPanel.DockDockPanel.DockDockPanel.DockDockPanel.Dock="Left" Width="100" Height="20">left</Button>

<Button DockPanel.DockDockPanel.DockDockPanel.DockDockPanel.Dock="Right" Width="100" Height="20">right</Button>

</DockPanel>

Page 21: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

21

XAML

XAML kann zur Laufzeit geschrieben und auch in die laufende Anwendung eingelesen werden:

Button origianlButton = ...

string savedButton = XamlWriter.SaveXamlWriter.SaveXamlWriter.SaveXamlWriter.Save(origianlButton);

StringReader stringReader = new StringReader(savedButton);

XmlReader xmlReader = XmlReader.Create(stringReader);

Button readerLoadButton = (Button) XamlReader.LoadXamlReader.LoadXamlReader.LoadXamlReader.Load(xmlReader);

Page 22: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

22

XAML

XAML-Container stammen von der abstrakten KlassePanel in System.Windows.Controls ab.

Kindelemente sind in einer Collection Children untergebracht (muss in XML aber nicht angegebenwerden).

Page 23: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

23

XAML

Canvas ist ein Container, dessen Kindelemente an den Seiten verankert werden können.

Bei Überdeckungen der Kinder kann man die Property ZIndex definieren.

<CanvasCanvasCanvasCanvas Background="LightSteelBlue">

<TextBlock FontSize="14" Canvas.TopCanvas.TopCanvas.TopCanvas.Top="100" Canvas.LeftCanvas.LeftCanvas.LeftCanvas.Left="10">Sonne</TextBlock>

<TextBlock FontSize="22" Canvas.Top="200" Canvas.Left="75">Mond</TextBlock>

</Canvas>

Page 24: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

24

XAML

Prinzipiell könnte alles auch immer rein mit Code erreicht werden, ist aber meist umständlicher.

TextBlock txt1 = new TextBlock();

txt1.FontSize = 14;

txt1.Text = "Sonne";

Canvas.SetTop(txt1, 100);

Canvas.SetLeft(txt1, 10);

myCanvas.Children.Add(txt1);

Page 25: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

25

XAML

Beim StackPanel werden die Kinder nacheinanderangeordnet (standardmäßig vertikal, Property Orientation kontrolliert das).

<StackPanelStackPanelStackPanelStackPanel>

<Border Background="SkyBlue" BorderBrush="Black" BorderThickness="1">

<TextBlock Foreground="Black" FontSize="12">Sonne</TextBlock>

</Border>

<Border Width="400" Background="CadetBlue" BorderBrush="Black" BorderThickness="1">

<TextBlock Foreground="Black" FontSize="14">Mond</TextBlock>

</Border>

...

Page 26: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

26

XAML

Beim DockPanel werden die Kinder an den 4 Seiten und in der Mitte angeordnet (vgl. BorderLayout in Java).

<DockPanelDockPanelDockPanelDockPanel LastChildFill="True">

<Border Height="25" Background="SkyBlue" BorderBrush="Black" BorderThickness="1" DockPanel.Dock="TopDockPanel.Dock="TopDockPanel.Dock="TopDockPanel.Dock="Top"""">

<TextBlock Foreground="Black">Dock = "Top"</TextBlock>

</Border>

<Border Height="25" Background="SkyBlue" BorderBrush="Black" BorderThickness="1" DockPanel.Dock="TopDockPanel.Dock="TopDockPanel.Dock="TopDockPanel.Dock="Top"""">

<TextBlock Foreground="Black">Dock = "Top"</TextBlock>

</Border>

<Border Height="25" Background="LemonChiffon" BorderBrush="Black" BorderThickness="1" DockPanel.Dock="BottomDockPanel.Dock="BottomDockPanel.Dock="BottomDockPanel.Dock="Bottom""""> <TextBlock Foreground="Black">Dock = "Bottom"</TextBlock>

</Border>

...

Page 27: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

27

XAML

Beim Grid kann eine Tabellenstruktur definiert werden.

<GridGridGridGrid VerticalAlignment="Top" HorizontalAlignment="Left" ShowGridLines="True" Width="250" Height="100"> <Grid.ColumnDefinitionsGrid.ColumnDefinitionsGrid.ColumnDefinitionsGrid.ColumnDefinitions>

<ColumnDefinition /> <ColumnDefinition /> <ColumnDefinition />

</Grid.ColumnDefinitions>

<Grid.RowDefinitionsGrid.RowDefinitionsGrid.RowDefinitionsGrid.RowDefinitions>

<RowDefinition /> <RowDefinition /> <RowDefinition /> <RowDefinition />

</Grid.RowDefinitions>

<TextBlock FontSize="20" FontWeight="Bold" Grid.ColumnSpanGrid.ColumnSpanGrid.ColumnSpanGrid.ColumnSpan="3" Grid.RowGrid.RowGrid.RowGrid.Row="0">2005 Products Shipped</TextBlock> <TextBlock FontSize="12" FontWeight="Bold" Grid.Row="1" Grid.Column="0">Quarter 1</TextBlock>

<TextBlock FontSize="12" FontWeight="Bold" Grid.Row="1" Grid.Column="1">Quarter 2</TextBlock>

<TextBlock FontSize="12" FontWeight="Bold" Grid.Row="1" Grid.Column="2">Quarter 3</TextBlock>

<TextBlock Grid.Row="2" Grid.Column="0">50000</TextBlock>

...

Page 28: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

28

XAML

Im Container können die Komponenten plaziert werden. Sie erben von Control viele Eigenschaften:

• Background, Foreground

• Height, Width

• Name

• FontFamily, FontSize, FontStyle

• Cursor, Tooltip

• Margin, Padding

• Opacity, Visibility …

Page 29: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

29

XAML

Standardkomponenten sind z.B.

• Label, TextBox, PasswordBox

• Button, CheckBox, RadioButton

• Menu, MenuItem

• ListBox, ComboBox

• ScrollBar, ScrollViewer

<StackPanel>

<RadioButton GroupName="colorgrp">Red</RadioButton>

<RadioButton GroupName="colorgrp">Blue</RadioButton>

<RadioButton GroupName="numgrp">1</RadioButton>

<RadioButton GroupName="numgrp">2</RadioButton>

Page 30: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

30

XAML

Zusatzkomponenten sind z.B.

• ViewBox für Skalierungen

• Border

• BulletDecorator

• GroupBox

• Expander zum Auf- und Zuklappen

• Image, MediaElement

• Popup

• ProgressBar, StatusBar, ToolBar

• ToolTip

Page 31: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

31

Gliederung

1. Einleitung

2. XAML

3. Grafik

4. Databinding

Page 32: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

32

Grafik

Es gibt herausragende Fähigkeiten in den Bereichen

• 2D

• Bildbearbeitung

• Textdarstellung

• 3D

• Videos

Diese dürften meistens das entscheidende Kriterium fürden Einsatz von WPF darstellen.

Page 33: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

33

Grafik

2D-Operationen rechnen in einer geräteunabhängigenEinheit (Device Independent Pixel) der Größe 1/96 Inch.

Auf dem Bildschirm wird das je nach dpi skaliert.

Folgende Grundformen (von Shape abgeleitet)

Line, Rectangle, Ellipse, Polyline, Polygon, Path

Alle können direkt als Komponente verwendet werden(da von UIElement abgeleitet).

Page 34: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

34

Grafik

Page 35: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

35

Grafik

Gemeinsame Eigenschaften der 2D-Formen:

• Stroke für den Umriss

• StrokeThickness

• Fill

Canvas ist sehr gut als Container geeignet.

<Canvas Height="300" Width="300">

<Line X1="10" Y1="10" X2="50" Y2="50" StrokeStrokeStrokeStroke="Black" StrokeThicknessStrokeThicknessStrokeThicknessStrokeThickness="4" />

...

Page 36: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

36

Grafik

Affine Transformationenkönnen angewendetwerden:

<Polyline Points="25,25 0,50 25,75 50,50 25,25 25,0" Stroke="Blue" StrokeThickness="10" Canvas.Left="75" Canvas.Top="50">

<Polyline.RenderTransform>

<RotateTransform CenterX="0" CenterY="0" Angle="22" /> </Polyline.RenderTransform>

</Polyline>

Page 37: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

37

Grafik

Animationen über Mausevents(Farbe / Durchsichtigkeit ändertsich)

Page 38: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

38

Grafik

Farbverläufe können als Füllungeingesetzt werden (auch rund)

<Rectangle Width="200" Height="100">

<Rectangle.Fill>

<LinearGradientBrush StartPoint="0,0.5" EndPoint="1,0.5">

<GradientStop Color="Yellow" Offset="0.0" />

<GradientStop Color="Red" Offset="0.25" />

<GradientStop Color="Blue" Offset="0.75" />

<GradientStop Color="LimeGreen" Offset="1.0" />

</LinearGradientBrush>

</Rectangle.Fill>

</Rectangle>

Page 39: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

39

Grafik

Bei der Bildbearbeitung stellt schon die StandardklasseImage viele Möglichkeiten bereit. Folgende Formatekönnen angezeigt werden:

• bmp

• gif

• ico

• jpg

• png

• tiff

• wdp (Windows Media Photo)

Page 40: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

40

Grafik

Ausschnitte können über CroppedBitmap gewähltwerden:

<Image Width="200" Grid.Column="0" Grid.Row="3" Margin="5"> <Image.Source>

<CroppedBitmap Source="{StaticResource croppedImage}" SourceRect="30 0 75 50"/>

</Image.Source>

</Image>

Page 41: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

41

Grafik

Bitmapeffekte

• BlurBitmapEffect

• OuterGlowBitmapEffect

• DropShadowBitmapEffect

<Button Margin="50" Width="200">DropShadow

<Button.BitmapEffectButton.BitmapEffectButton.BitmapEffectButton.BitmapEffect>

<DropShadowBitmapEffectDropShadowBitmapEffectDropShadowBitmapEffectDropShadowBitmapEffect Color="Black"

Direction="320" ShadowDepth="25"

Softness="1" Opacity="0.5"/>

</Button.BitmapEffect>

</Button>

Page 42: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

42

Grafik

Textverarbeitung: TextBox füreinfachen Text, TextBlock mitInlineCollection für unterschiedlicheFormatierungen.

Beide können als Beschriftungverwendet werden, z.B. für Buttons.

<TextBlock TextBlock TextBlock TextBlock Name="textBlock1" TextWrapping="Wrap">

<Bold>TextBlock</Bold> is designed to be <Italic>lightweight</Italic>,

and is geared specifically at integrating <Italic>small</Italic> portions

of flow content into a UI.

</TextBlock>

Page 43: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

43

Grafik

Texteffekte sind möglich:

• Rotation

• Unter-, Durch-, Überstreichen

<TextBlock FontSize="36">the lazy brown dog.

<TextBlock.TextDecorations>

<TextDecorationCollection>

<TextDecoration

PenThicknessUnit="FontRecommended">

<TextDecoration.Pen>

<Pen Thickness="1.5">

<Pen.Brush> ...

Page 44: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

44

Grafik

Für größere Dokumente:

• FixedDocument

• FlowDocument

Jeweils mit Viewerkomponentenz.B. in XPS

<FlowDocument>

<Paragraph FontSize="18">Flow Format Example</Paragraph> ...

<List>

<ListItem>

<Paragraph>ListItem 1</Paragraph> ...

Page 45: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

45

Grafik

3D-Darstellungen können in ViewPort3D eingebettet werden:

<Canvas Width="321" Height="201">

<Viewport3D ClipToBounds="True" Width="150" Height="150" Canvas.Left="0" Canvas.Top="10">

<Viewport3D.Camera>

<PerspectiveCamera Position="0,0,2" LookDirection="0,0,-1" FieldOfView="60" />

</Viewport3D.Camera>

<Viewport3D.Children> ...

Page 46: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

46

Grafik

Eine VisualBrush kann als Füllung Videos abspielen(MediaPlayer als Backend).

<TextBlock FontSize="100pt" Text="Some Text" FontWeight="Bold">

<TextBlock.Foreground>

<VisualBrushVisualBrushVisualBrushVisualBrush>

<VisualBrush.Visual>

<MediaElementMediaElementMediaElementMediaElement Source="Video.wmf" />

</VisualBrush.Visual>

</VisualBrush>

</TextBlock.Foreground>

</TextBlock>

Page 47: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

47

Gliederung

1. Einleitung

2. XAML

3. Grafik

4. Databinding

Page 48: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

48

Databinding

Woher kommt der Text in einer TextBox oder die Einträge in einer Liste?

Umgekehrt: Wie kommen aktualisierte Werte aus einemTextfeld zurück in Stammdaten?

Bisher: Mühsame gleichbleibende Handarbeit

Page 49: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

49

Databinding

WPF bietet ein neues Modell an, um UI mit demDatenbestand abzugleichen: Databinding.

In System.Windows.Data gibt es den entscheidendenTyp Binding, der Properties synchronisieren kann.

Page 50: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

50

Databinding

Beispiel: Beschriftung eines Butttons soll von Textfeldkommen.

Eine mögliche Schreibweise über Attribut:

<StackPanel>

<Button Content="{Binding ElementName=tb, Path=Text}{Binding ElementName=tb, Path=Text}{Binding ElementName=tb, Path=Text}{Binding ElementName=tb, Path=Text}"/>

<TextBlock Name="tb">Ein Test</TextBlock>

</StackPanel>

Page 51: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

51

Databinding

Beispiel: Beschriftung eines Butttons soll von Textfeldkommen.

Andere mögliche Schreibweise über Kindelement:

<StackPanel>

<Button>

<Binding Binding Binding Binding ElementName="tb" Path="Text" />

</Button>

<TextBlock Name="tb">Ein Test</TextBlock>

</StackPanel>

Page 52: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

52

Databinding

Modus der Aktualisierung ist über Mode einstellbar:

• Default (vordefiniert, bei TextBoxen TwoWay)

• OneTime (einmal von Quelle zu Ziel)

• OneWay (immer von Quelle zu Ziel)

• OneWayToSource (immer von Ziel zu Quelle)

• TwoWay (immer in beide Richtungen)

<Binding ... ModeModeModeMode="OneWayToSource"/>

Page 53: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

53

Databinding

Das Ziel wird immer sofort aktualisiert, die Quelle nichtunbedingt. Einstellbar durch UpdateSourceTrigger mitden Werten:

• Default (bei TextBox LostFocus)

• Explicit (Methode UpdateSource() aufrufen)

• LostFocus

• PropertyChanged

<Binding ... UpdateSourceTriggerUpdateSourceTriggerUpdateSourceTriggerUpdateSourceTrigger="LostFocus"/>

Page 54: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

54

Databinding

Mögliche Quellen für ein Binding:

• XAML-Element (schon betrachtet)

• Objekte aus C#

• Collections

• XML-Daten

• ADO-Datenquellen

<Binding ... UpdateSourceTrigger="LostFocus"/>

Page 55: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

55

Databinding

Als Beispiel werden normale Objekte betrachtet (andereFälle ähnlich).

Klassen müssen für das Binding erfüllen:

• öffentliche Properties (Felder gehen nicht)

• Defaultkonstruktor

Page 56: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

56

Databinding

• Interface INotifyPropertyChanged ausSystem.ComponentModel

// in Datenklasse

public String Name {

get { return name; }

set { name = value; OnPropertyChanged("Name") ;}

}

public void OnPropertyChanged(string prop) {

if (PropertyChanged != null)

PropertyChanged(this, new PropertyChangedEventArgs(prop));

}

public event PropertyChangedEventHandler PropertyChanged;

Page 57: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

57

Databinding

XAML kann im Window auch C#-Namesräumedeklarieren:

<WindowWindowWindowWindow x:Class="DataBinding.Window1"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:clrxmlns:clrxmlns:clrxmlns:clr="clr-namespace:System;assembly=mscorlib"

xmlns:srcxmlns:srcxmlns:srcxmlns:src="clr-namespace:DataBinding"

Title="Window1" Height="300" Width="300">

Page 58: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

58

Databinding

Ein Datenobjekt kann von XAML als benannteRessource erzeugt werden.

<Window x:Class="DataBinding.Window1" ... >

<Window.Resources>

<src:Produkt x:Key="p1" Name="Persil"src:Produkt x:Key="p1" Name="Persil"src:Produkt x:Key="p1" Name="Persil"src:Produkt x:Key="p1" Name="Persil" />

</Window.Resources>

...

<Binding Source="{StaticResource p1}{StaticResource p1}{StaticResource p1}{StaticResource p1}" Path="Name" />

Page 59: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

59

Databinding

Eine benannte Ressource kann auch alsObjectDataProvider erzeugt werden:

<Window x:Class="DataBinding.Window1" ... >

<Window.Resources>

<ObjectDataProvider x:Key="p2" />

</Window.Resources> ...

Page 60: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

60

Databinding

Im Code kann man nach der Ressource suchen und einObjekt zuweisen:

// z.B. beim Laden

Produkt produkt = ...;

ObjectDataProvider providerObjectDataProvider providerObjectDataProvider providerObjectDataProvider provider = (ObjectDataProvider) FindResource("p2");

provider.ObjectInstance provider.ObjectInstance provider.ObjectInstance provider.ObjectInstance = produkt;

Page 61: C# für Einsteiger - edenmarket.de · C# f ü r Quereinsteiger ©eden market GmbH Max-Brod-Weg 14 D -70437 Stuttgart Fon: +49 (0) 711 990 16 -50 Fax: -99  3 Einleitung

C# f

C# f

C# f

C# f üü üü

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

r Quereinsteiger

© eden market GmbH � Max-Brod-Weg 14 � D - 70437 Stuttgart

Fon: +49 (0) 711 990 16 -50 � Fax: -99 � www.edenmarket.de

61

Übung 10, Aufgabe 2