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 25 Weitere Möglichkeiten der Datenbindung
Pfeil 25.1 »ItemsControl«-Steuerelemente anpassen
Pfeil 25.1.1 Den Style eines »ListBoxItem«-Elements ändern
Pfeil 25.1.2 DataTemplates festlegen
Pfeil 25.1.3 »DataTemplates« mit Trigger
Pfeil 25.2 Alternative Datenbindungen
Pfeil 25.2.1 Die Klasse »ObjectDataProvider«
Pfeil 25.3 Navigieren, Filtern, Sortieren und Gruppieren
Pfeil 25.3.1 Navigieren
Pfeil 25.3.2 Sortieren
Pfeil 25.3.3 Filtern
Pfeil 25.3.4 Gruppieren
Pfeil 25.4 Das Steuerelement »DataGrid«
Pfeil 25.4.1 Elementare Eigenschaften des »DataGrid«
Pfeil 25.4.2 Spalten definieren
Pfeil 25.4.3 Details einer Zeile anzeigen

Galileo Computing - Zum Seitenanfang

25.2 Alternative DatenbindungenZur nächsten Überschrift

Mit DataContext oder ItemsSource lassen sich Datenquellen an Steuerelemente binden. In XAML gibt es darüber hinaus noch weitere Wege, um auf Datenquellen zuzugreifen:

  • ObjectDataProvider
  • XmlDataProvider

Ich werde Ihnen an dieser Stelle noch den sehr interessanten ObjectDataProvider vorstellen. Der begrenzte Umfang dieses Buches erlaubt es leider nicht, darüber hinaus den XmlDataProvider zu erläutern.


Galileo Computing - Zum Seitenanfang

25.2.1 Die Klasse »ObjectDataProvider«Zur nächsten ÜberschriftZur vorigen Überschrift

Lassen Sie uns an dieser Stelle zuerst zurückblicken und uns in Erinnerung rufen, wie wir Objekte im Resource-Abschnitt eines Elements definieren:

<Window.Resources>
<local:Person x:Key="pers" Name="Meier" />
</Window.Resources>

Listing 25.9 Ein CLR-Objekt im XAML-Code erstellen

Dazu ist es notwendig, zuerst den Namespace und möglicherweise die Assemblierung als XML-Namespace-Angabe bekannt zu geben. Unter Voranstellung des Namespace-Präfixes erstellen Sie ein Objekt (in Listing 25.9 vom Typ Person) und können dem Objekt sofort Daten mit auf den Lebensweg geben. Diese Form der Instanziierung verwendet den parameterlosen Konstruktor.

Die Klasse ObjectDataProvider gestattet ebenfalls Objekte im XAML-Code zu erstellen. Aber die Möglichkeiten dieser Klasse gehen über die angesprochene Instanziierung hinaus, denn mit dieser Klasse können Sie auch parametrisierte Konstruktoren und sogar Methoden des Objekts aufrufen. Letzteres gestattet es, Methoden aufzurufen, die als Rückgabewert eine Liste von Elementen liefern.

Die Klasse, an der wir ObjectDataProvider testen wollen, soll wieder Person sein. Sie ist mit der Methode DoSomething ausgestattet, die im Grunde genommen nichts mit einer Person zu tun hat. Sie dient nur zu Testzwecken.

class Person {
public string Name {get;set;}

public Person() { }

public Person(string name) {
Name = name;
}

public string DoSomething(int value){
return Math.Pow(value, 2).ToString();
}
}

Listing 25.10 Die Vorgabe der Klasse »Person«

Im weiteren Verlauf des Beispiels werden wir zwei Namespaces benutzen, die wir zuerst bekannt geben und mit einem Präfix versehen:

xmlns:local="clr-namespace:ObjectDataProviderSample"
xmlns:sys="clr-namespace:System;assembly=mscorlib"

Listing 25.11 Bekanntgabe der notwendigen XML-Namespaces

Aufruf eines parametrisierten Konstruktors

Widmen wir uns zunächst dem ObjectDataProvider, mit dem wir den parametrisierten Konstruktor von Person aufrufen:

<ObjectDataProvider x:Key="pers1" ObjectType="{x:Type local:Person}">
<ObjectDataProvider.ConstructorParameters>
<sys:String>Manfred Fischer</sys:String>
</ObjectDataProvider.ConstructorParameters>
</ObjectDataProvider>

Listing 25.12 Aufruf des parametrisierten Konstruktors

Dem ObjectDataProvider-Objekt teilen wir mit der Eigenschaft ObjectType mit, von welchem Typ das von uns angeforderte Objekt ist. Über die Eigenschaft ConstructorParameters übergeben wir dem parametrisierten Konstruktor das erforderliche Argument. Eingefasst wird das Übergabeargument in ein datentypbeschreibendes Element. Um uns vom Erfolg des Konstruktoraufrufs zu überzeugen, reicht ein einfaches TextBlock-Element:

<TextBlock Text="{Binding Source={StaticResource pers1}, Path=Name}" />

Listing 25.13 Bindung an das durch einen parametrisierten Konstruktor erstellte Objekt

Objektmethode aufrufen

Sehr ähnlich, wie wir einen parametrisierten Konstruktor ansprechen, rufen wir auch eine Methode auf. Hierzu stellt uns das ObjectDataProvider-Objekt mit MethodName eine Eigenschaft zur Verfügung, der wir die aufzurufende Methode übergeben. Definiert die aufzurufende Methode darüber hinaus auch noch Parameter, werden diese der Eigenschaft MethodParameters bekannt gegeben. Mit der Eigenschaft ObjectInstance des ObjectDataProvider-Elements können wir auf das bereits zuvor erstellte Person-Objekt pers1 zugreifen.

<ObjectDataProvider x:Key="pers2" 
ObjectInstance="{StaticResource pers1}"
MethodName="DoSomething">
<ObjectDataProvider.MethodParameters>
<sys:Int32>12</sys:Int32>
</ObjectDataProvider.MethodParameters>

</ObjectDataProvider>

Listing 25.14 Methodenaufruf im XAML-Code definieren

Um die Eigenschaft eines Steuerelements an den Rückgabewert der Methode zu binden, erstellen wir ein Binding-Objekt und teilen diesem in seiner Eigenschaft Source mit, dass auf eine Ressource statisch zugegriffen werden soll. Die Bindung sehen Sie im folgenden Listing.

<TextBlock Text="{Binding Source={StaticResource pers2}}" />

Listing 25.15 Binden an die Methode eines »ObjectDataProvider«-Objekts

Würde der Rückgabewert der Methode eine Menge sein, müsste man natürlich an die Eigenschaft DataContext oder ItemsSource eines entsprechenden ItemsControls binden.

Bindung an eine statische Methode

Ganz einfach gestaltet sich auch der Zugriff auf eine statische Methode. Sie brauchen dazu nur keinen Konstruktor aufzurufen.

<ObjectDataProvider x:Key="pers3" 
ObjectType="{x:Type local:Person}"
MethodName="DoSomething2">
<ObjectDataProvider.MethodParameters>
<sys:Int32>17</sys:Int32>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>

Listing 25.16 Aufruf einer statischen Methode

Sie finden das komplette Beispiel auf der Buch-DVD unter Beispiele\Kapitel 25\ObjectDataProviderSample.



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