WPF Bindung - sws.bfh.ch amrhein/Skripten/Info2/05.   In XAML wird die Bindung erstellt durch: also

  • View
    212

  • Download
    0

Embed Size (px)

Text of WPF Bindung - sws.bfh.ch amrhein/Skripten/Info2/05.   In XAML wird die Bindung erstellt durch:...

  • WPF Bindung

    Element- und Daten-BindungElement- und Daten-Bindung

    Dr. Beatrice Amrhein

  • berblick

    Element-Bindung via Eigenschaften-Editor

    Grenzen des Eigenschaften Editors

    Die C# Klasse Binding

    Bindung an C# Objekte Bindung an C# Objekte

    2Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

  • EinfhrungEinfhrung

    3Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

  • Einfhrung

    Bindungen werden zwischen zwei Elementen definiert.

    Datenquelle Datenziel.

    Im Datenziel wird eine oder mehrere Eigenschaften an eine Datenquelle verbunden.

    Die Datenquelle kann

    Die Eigenschaft eines anderen Elements (z. B. eines Steuerelement) Die Eigenschaft eines anderen Elements (z. B. eines Steuerelement) sein Element-Bindung.

    Oder eine Daten-Bindung, das heisst

    die Daten-Quelle ist ein C# Objekt

    eine Auflistung,

    eine Datenbank,

    eine XML-Datei.

    . . . 4

    Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

  • Element-Bindung via Element-Bindung via Eigenschaften Editor

    5Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

  • Inhalt des Labels an die TextBox binden

    Bindungs-Beispiel

    6Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

    Den Fokus auf das leere Label setzen

  • Inhalt des Labels an die TextBox binden

    Im Eigenschaftenfenster von Label die kleine Box rechts von Content auswhlen.

    7Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

    Menu-PunktDatenbindung erstellenauswhlen

  • Inhalt des Labels an die TextBox binden

    Datenquelle ElementName auswhlen

    Element textBox1 auswhlen

    (vgl. Name im XAML - Code !)

    8Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

    XAML - Code !)

  • Inhalt des Labels an die TextBox binden

    Pfad Text auswhlen

    9Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

    Mit OK besttigen

  • Inhalt des Labels an die TextBox binden

    Bindungs-Beispiel

    10Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

    Natrlich ist es auch mglich, diese

    Element-Bindung (viel schneller) von

    Hand zu schreiben.

  • Das Resultat

    Bindungs-Beispiel

    11Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

    Beim Selber-Schreiben, bietet es sich

    an, die einfachere Element-Notation

    zu verwenden.

  • Label an ListBoxLabel an ListBoxbinden

    12Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

  • Ausgangspunkt

    Andrea

    BennoBenno

    Corinne

    David

    Eva

    Felix

    Gabi

    Hannes

    13Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

    Die Verknpfung mit einer

    Auswahl-Liste wird vom

    Editor nur teilweise

    untersttzt.

  • Eigenschaften-Editor

    Andrea

    BennoBenno

    Corinne

    David

    Eva

    Felix

    Gabi

    Hannes

    14Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

    Die Verknpfung mir einer

    Auswahl-Liste wird vom

    Editor nur teilweise

    untersttzt.

  • Was der Eigenschaften-Editor erzeugt

    AndreaAndrea

    Benno

    Corinne

    David

    Eva

    Felix

    Gabi

    Hannes

    15Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

    Der erzeugte Code ist

    nicht vollstndig und muss

    von Hand ergnzt

    werden.

  • .Content ergnzen

    AndreaAndrea

    Benno

    Corinne

    David

    Eva

    Felix

    Gabi

    Hannes

    16Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

  • Element Schreibweise

    AndreaAndrea

    Benno

    Corinne

    David

    Eva

    Felix

    Gabi

    Hannes

    17Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

    Auch hier bietet es sich an,

    die einfachere Notation zu

    verwenden.

  • Beispiel 2: Bindung via C# Code

    namespace ueb5

    {

    public partial class MainWindow : Window

    {

    public MainWindow()

    {

    InitializeComponent();

    Binding binding = new Binding("SelectedItem.Content");

    binding.ElementName = "listBox1";binding.ElementName = "listBox1";

    label.SetBinding(Label.ContentProperty, binding);

    }

    }

    }

    18Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

    Statt im XAML-Code kann die

    Datenbindung auch im C#

    Code definiert werden.

  • Daten-Bindung

    Die C# Klasse Binding

    19

  • Die Klasse Binding

    Dient als Verbindung zwischen

    Ziel-Objekten (normalerweise WPF-Elemente) und

    einer Datenquelle (z. B. eine Datenbank, eine XML-Datei oder ein beliebiges Objekt mit Daten)

    20Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

    Bindung

  • Die Klasse Binding

    Bindung

    21Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

    Eine Bindung besteht aus einem Bindungsziel, (mit einer Abhngigkeits-Eigenschaft), einer Bindungsquelle sowie dem Pfad zum konkreten Wert in der Bindungsquelle. Diese kann im XAML oder im C# Code erzeugt werden.

    In XAML wird die Bindung erstellt durch: also zum Beispiel

    In C# wird ein Bindungsobjekt durch einen Konstruktor erzeugtBinding b = new Binding(. . .).

  • Die Eigenschaften der C# Klasse Binding

    ElementNameGibt den Namen des Steuerelements (vom GUI) an, welches als Datenquelle dient.

    PathPath ist die Eigenschaft (Property) an welche die Daten gebunden werden (Value, Text, Content, )

    ModeDefiniert den Bindungsmodus (Aktualisierungsmodus) fest. Dieser kann einseitig (OneWay) oder beidseitig (TwoWay) zwischen GUI Mode kann einseitig (OneWay) oder beidseitig (TwoWay) zwischen GUI und Datenobjekt sein. Default ist TwoWay.

    ConverterGibt das Objekt an, welche als Converter (bersetzer) verwendet werden soll.

    Source Legt das Objekt fest, welches als Quelle der Datenbindung dient.

    UpdateSourceTriggerDefiniert, wann die Datenquelle aktualisiert werden soll (z.B. jedesmal wenn sich die die Daten ndern).

    22Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

  • Datenbindung an C# Datenbindung an C# Person Objekt

    23Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

  • Die Daten-Quelle: Die Klasse Person

    public class Person

    {

    private String name;

    private int idNummer;

    public Person(String n, int id)

    {

    this.name = n;

    this.idNummer = id;

    }

    Die Klasse Person, mit Name und IDNummer.

    Konstruktor

    public String Name

    {

    get { return name; }

    set { name = value; }

    }

    public int IDNummer

    {

    get { return idNummer; }

    set { idNummer = value; }

    }

    }

    24Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

    Zugriffsmethoden (get/set) fr alle Eigenschaften (Properties)

  • Erstellen des Person Objekts und setzen als Datenquelle

    // MainWindow.xaml.cs

    using System.Windows;

    namespace bindung

    {

    public partial class MainWindow : Window

    {

    public Person p = new Person("Meier", 2423);

    public MainWindow()Person p ist die

    public MainWindow()

    {

    InitializeComponent();

    DataContext = p;

    }

    }

    }

    25Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

    Person p ist die Datenquelle fr die XAML-Seite

  • Verbindung (Binding) im XAML Code

    Personen-Angaben

    Name

    ID-Nummer

    Zweiseitige Datenbindung (lesen und schreiben)

    26Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

    Da das Person Objekt die Datenquelle ist, kann direkt auf die Eigenschaften (Properties) Name und IDNummer von Person zugegriffen werden.

  • Datenbindung fr das Einschreibe-Formular

    27Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

    Einschreibe-Formular

  • Die Klasse Einschreibung

    public class Einschreibung

    {

    private String name;

    private String vorname;

    private String fach;

    private int semester;

    public String Name

    {

    get { return name; }

    set { name = value; }

    Jedes Feld des Formulars erhlt hier eine Eigenschaft (eine Property).

    set { name = value; }

    }

    . . . .

    public int Semester

    {

    get { return semester; }

    set {semester = value; }

    }

    }

    28Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

    Fr jede Property mssen die Zugriffsmethoden (get/set) implementiert werden.

  • Die Klasse Einschreibung

    public partial class MainWindow : Window

    {

    Einschreibung einschreibung =

    new Einschreibung("Muster", "Peter", "Maschinentechnik",2);

    public MainWindow()

    {

    InitializeComponent();

    einschreibung erzeugen

    einschreibung als Datenquelle InitializeComponent();

    DataContext = einschreibung;

    }

    }

    29Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

    Datenquelle festlegen.

  • Der XAML Code