Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort zur 6. Auflage
1 Allgemeine Einführung in .NET
2 Grundlagen der Sprache C#
3 Das Klassendesign
4 Vererbung, Polymorphie und Interfaces
5 Delegates und Ereignisse
6 Strukturen und Enumerationen
7 Fehlerbehandlung und Debugging
8 Auflistungsklassen (Collections)
9 Generics – Generische Datentypen
10 Weitere C#-Sprachfeatures
11 LINQ
12 Arbeiten mit Dateien und Streams
13 Binäre Serialisierung
14 XML
15 Multithreading und die Task Parallel Library (TPL)
16 Einige wichtige .NET-Klassen
17 Projektmanagement und Visual Studio 2012
18 Einführung in die WPF und XAML
19 WPF-Layout-Container
20 Fenster in der WPF
21 WPF-Steuerelemente
22 Elementbindungen
23 Konzepte von WPF
24 Datenbindung
25 Weitere Möglichkeiten der Datenbindung
26 Dependency Properties
27 Ereignisse in der WPF
28 WPF-Commands
29 Benutzerdefinierte Controls
30 2D-Grafik
31 ADO.NET – Verbindungsorientierte Objekte
32 ADO.NET – Das Command-Objekt
33 ADO.NET – Der SqlDataAdapter
34 ADO.NET – Daten im lokalen Speicher
35 ADO.NET – Aktualisieren der Datenbank
36 Stark typisierte DataSets
37 Einführung in das ADO.NET Entity Framework
38 Datenabfragen des Entity Data Models (EDM)
39 Entitätsaktualisierung und Zustandsverwaltung
40 Konflikte behandeln
41 Plain Old CLR Objects (POCOs)
Stichwort

Download:
- Beispiele, ca. 62,4 MB

Buch bestellen
Ihre Meinung?

Spacer
Visual C# 2012 von Andreas Kühnel
Das umfassende Handbuch
Buch: Visual C# 2012

Visual C# 2012
Rheinwerk Computing
1402 S., 6., aktualisierte und erweiterte Auflage 2013, geb., mit DVD
49,90 Euro, ISBN 978-3-8362-1997-6
Pfeil 22 Elementbindungen
Pfeil 22.1 Einführung in die Bindungstechnik
Pfeil 22.1.1 Ein einfaches Bindungsbeispiel
Pfeil 22.2 Die Klasse »Binding«
Pfeil 22.2.1 Die Bindungsrichtung festlegen
Pfeil 22.2.2 Aktualisierung der Bindung
Pfeil 22.2.3 Die Ereignisse »SourceUpdated« und »TargetUpdated«
Pfeil 22.2.4 Beenden einer Bindung
Pfeil 22.3 Bindungsalternativen
Pfeil 22.3.1 Die Eigenschaft »Source«
Pfeil 22.3.2 Anbindung an relative Datenquellen
Pfeil 22.3.3 Die Bindung an »DataContext«

22 ElementbindungenZur nächsten Überschrift

In den Kapiteln 19 bis 21 wurden viele Aspekte der Oberflächengestaltung diskutiert. Nun wird es Zeit, sich näher mit den speziellen WPF-Techniken zu beschäftigen. Dazu starten wir mit einem Thema, das sich durch die folgenden Kapitel wie ein roter Faden ziehen wird: den Bindungen. Man unterscheidet dabei zwei grundlegende Techniken: die Element- und die Datenbindung. Bei der Elementbindung wird die Eigenschaft eines Elements an die Eigenschaft eines anderen Elements gebunden, bei der Datenbindung handelt es sich um die Bindung einer Elementeigenschaft an eine allgemeine Datenquelle. In diesem Kapitel wird schwerpunktmäßig auf die Elementbindung eingegangen. In Kapitel 24 sehen wir uns noch die Details der allgemeinen Datenbindung an.


Galileo Computing - Zum Seitenanfang

22.1 Einführung in die BindungstechnikZur nächsten ÜberschriftZur vorigen Überschrift

Bindungen werden zwischen zwei Elementen definiert. Auf der einen Seite befindet sich eine Datenquelle, auf der anderen das Datenziel. Im Datenziel wird eine Eigenschaft oder auch mehrere an Daten gebunden, die die Datenquelle zur Verfügung stellt. Datenquellen können ausgesprochen vielfältig sein:

  • Es kann sich bei der Datenquelle um die Eigenschaft eines anderen Elements (z. B. ein Steuerelement) handeln.
  • Die Daten können aus einer XML-Datei bezogen werden.
  • Daten können aus einer Auflistung oder gar aus einer Datenbank stammen.

Eine Voraussetzung muss dabei seitens des Datenziels erfüllt sein: Die Datenbindung funktioniert nur, wenn die Eigenschaft des Datenziels, an die eine Datenquelle gebunden wird, als Abhängigkeitseigenschaft (Dependency Property) implementiert ist. Erfreulicherweise erfüllen die meisten Eigenschaften der WPF-spezifischen Klassen diese Bedingung.


Galileo Computing - Zum Seitenanfang

22.1.1 Ein einfaches BindungsbeispielZur vorigen Überschrift

Bevor wir uns mit den Details der Elementbindung beschäftigen, wollen wir uns ein einfaches Beispiel ansehen, um den Bindungseffekt zu verstehen.

Die einfachste Bindung in der WPF ist sicherlich die Elementbindung zwischen zwei WPF-Elementen. Auch hier wird zwischen der Datenquelle und dem Datenziel unterschieden. Die Datenquelle stellt einen Wert zur Verfügung, das Datenziel bindet eine Eigenschaft an diesen Wert. Sollte sich der Wert in der Datenquelle ändern, wird auch die gebundene Eigenschaft des Datenziels geändert. Wie bereits erwähnt, muss die gebundene Eigenschaft des Datenziels dabei eine Bedingung erfüllen: Es muss eine Abhängigkeitseigenschaft (Dependency Property) sein.

Kommen wir zum angekündigten ersten Beispiel, und sehen Sie sich bitte Abbildung 22.1 an. Im Fenster ist oben eine TextBox und unten eine ListBox platziert. Die ListBox enthält ein paar Namen, von denen einer ausgewählt werden kann. Die Eigenschaft Text der TextBox ist an die ListBox in der Weise gebunden, dass der in der ListBox selektierte Name sofort in der TextBox angezeigt wird.

Abbildung

Abbildung 22.1 Einfache Datenbindung zwischen »TextBox« und »ListBox«

Sehen wir uns den XAML-Code an, auf dem die Abbildung basiert.

// Beispiel: ..\Kapitel 22\SimpleBinding

<Window ... >
<StackPanel>
<TextBox Height="25" Margin="10, 10, 10, 0" Name="textBox1"
Text="{Binding ElementName=listBox1,
Path=SelectedItem.Content}"/>
<ListBox Margin="10, 10, 10, 10" Name="listBox1">
<ListBoxItem>Michael</ListBoxItem>
<ListBoxItem>Gerald</ListBoxItem>
<ListBoxItem>Franz</ListBoxItem>
<ListBoxItem>Ralf</ListBoxItem>
<ListBoxItem>Sebastian</ListBoxItem>
<ListBoxItem>Thomas</ListBoxItem>
<ListBoxItem>Friedhelm</ListBoxItem>
<ListBoxItem>Karsten</ListBoxItem>
</ListBox>
</StackPanel>
</Window>

Listing 22.1 Der XAML-Code des Beispielprogramms »SimpleBinding«

Die Datenquelle ist in diesem Beispiel die ListBox. Für die Datenbindung sind bei diesem Element keine besonderen Maßnahmen notwendig. Die Bindung selbst ist in der TextBox definiert, dem Datenziel. Anstatt der Eigenschaft Text eine fixe Zeichenfolge zu übergeben, wird die Eigenschaft mit

Text="{Binding ElementName=listBox1, Path=SelectedItem.Content}"

an die ListBox gebunden. Datenbindungen werden mit der Markup-Erweiterung von XAML umgesetzt, d. h. innerhalb der geschweiften Klammern beschrieben. In der Markup-Erweiterung wird zuerst ein Objekt vom Typ Binding angegeben. Es müssen zwei Eigenschaften dieses Objekts festgelegt werden: ElementName und Path. ElementName beschreibt den Bezeichner des Elements, an das gebunden wird. Path gibt die Eigenschaft der Datenquelle an, an die gebunden werden soll. Die WPF verwendet den Ausdruck Path und nicht wie vielleicht erwartet Property, weil Path auf die Eigenschaft einer Eigenschaft zeigen kann – wie auch in unserem Beispiel SelectedItem.Content. In anderen Situationen kann es sich natürlich auch um die einfache Angabe einer Eigenschaft handeln (z. B. Text).

Wem die Bindung innerhalb einer Markup Extension zu unübersichtlich ist, kann die längere, besser strukturierte Schreibweise über XML-Knoten wählen.

<TextBox Height="25" Margin="10, 10, 10, 0" Name="textBox1" >
<TextBox.Text>
<Binding ElementName="listBox1" Path="SelectedItem.Content" />
</TextBox.Text>
</TextBox>

Listing 22.2 Lange Schreibweise einer Datenbindung

Um die Darstellung unseres ersten Beispiels zu vervollständigen, darf nicht unerwähnt bleiben, dass seine Datenbindung natürlich auch mit Programmcode möglich ist. Bezogen auf unser Beispielprogramm könnte die Bindung im Konstruktor des Window erfolgen, nach dem Aufruf der Methode InitializeComponent:

public MainWindow() {
InitializeComponent();
Binding binding = new Binding("SelectedItem.Content");
binding.ElementName = "listBox1";
textBox1.SetBinding(TextBox.TextProperty, binding);
}

Listing 22.3 Datenbindung mit C#-Code

Bemerkenswert ist die Anbindung der Eigenschaft Text an die durch das Binding-Objekt beschriebene Datenquelle mit der Methode SetBinding, der zwei Argumente übergeben werden. Dem ersten wird die Abhängigkeitseigenschaft des Datenziels genannt. Wahrscheinlich haben Sie hier textBox1.Text erwartet. Stattdessen wird aber TextBox.TextProperty angegeben. Dieser Schreibweise begegnen wir hier zum ersten Mal. Sie ist typisch für Methoden, die einen Parameter vom Typ DependencyProperty definieren.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.

>> Zum Feedback-Formular
<< zurück
  Zum Katalog
Zum Katalog: Visual C# 2012

Visual C# 2012
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Professionell entwickeln mit Visual C# 2012






 Professionell
 entwickeln mit
 Visual C# 2012


Zum Katalog: Windows Presentation Foundation






 Windows Presentation
 Foundation


Zum Katalog: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Katalog: C++ Handbuch






 C++ Handbuch


Zum Katalog: C/C++






 C/C++


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo





Copyright © Rheinwerk Verlag GmbH 2013
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de