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

Inhaltsverzeichnis
Vorwort zur 5. Auflage
1 Allgemeine Einführung in .NET
2 Grundlagen der Sprache C#
3 Klassendesign
4 Vererbung, Polymorphie und Interfaces
5 Delegates und Ereignisse
6 Weitere .NET-Datentypen
7 Weitere Möglichkeiten von C#
8 Auflistungsklassen (Collections)
9 Fehlerbehandlung und Debugging
10 LINQ to Objects
11 Multithreading und die Task Parallel Library (TPL)
12 Arbeiten mit Dateien und Streams
13 Binäre Serialisierung
14 Einige wichtige .NET-Klassen
15 Projektmanagement und Visual Studio 2010
16 XML
17 WPF – Die Grundlagen
18 WPF-Containerelemente
19 WPF-Steuerelemente
20 Konzepte der WPF
21 Datenbindung
22 2D-Grafik
23 ADO.NET – verbindungsorientierte Objekte
24 ADO.NET – Das Command-Objekt
25 ADO.NET – Der SqlDataAdapter
26 ADO.NET – Daten im lokalen Speicher
27 ADO.NET – Aktualisieren der Datenbank
28 Stark typisierte DataSets
29 LINQ to SQL
30 Weitergabe von Anwendungen
Stichwort

Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Visual C# 2010 von Andreas Kühnel
Das umfassende Handbuch
Buch: Visual C# 2010

Visual C# 2010
geb., mit DVD
1295 S., 49,90 Euro
Rheinwerk Computing
ISBN 978-3-8362-1552-7
Pfeil 17 WPF – Die Grundlagen
Pfeil 17.1 Merkmale einer WPF-Anwendung
Pfeil 17.2 Anwendungstypen
Pfeil 17.3 Eine WPF-Anwendung und ihre Dateien
Pfeil 17.3.1 Die Datei »App.xaml«
Pfeil 17.3.2 Die Datei »App.xaml.cs«
Pfeil 17.3.3 Die Dateien ».baml« und ».g.cs«
Pfeil 17.4 Einführung in XAML
Pfeil 17.4.1 Struktur einer XAML-Datei
Pfeil 17.4.2 XAML-Elemente
Pfeil 17.4.3 Eigenschaften eines XAML-Elements festlegen
Pfeil 17.4.4 Typkonvertierung
Pfeil 17.4.5 Markup-Erweiterungen (Markup Extensions)
Pfeil 17.4.6 Namespaces
Pfeil 17.4.7 XAML-Spracherweiterungen
Pfeil 17.4.8 Markup-Erweiterungen
Pfeil 17.5 Abhängige und angehängte Eigenschaften
Pfeil 17.5.1 Abhängige Eigenschaften
Pfeil 17.5.2 Angehängte Eigenschaften
Pfeil 17.6 Logischer und visueller Elementbaum
Pfeil 17.6.1 Warum wird zwischen den Elementbäumen unterschieden?
Pfeil 17.6.2 Elementbäume mit Code ermitteln
Pfeil 17.7 Ereignisse in der WPF
Pfeil 17.7.1 Allgemeine Grundlagen
Pfeil 17.7.2 Routed Events


Galileo Computing - Zum Seitenanfang

17.5 Abhängige und angehängte Eigenschaften Zur nächsten ÜberschriftZur vorigen Überschrift

WPF erweitert die Eigenschaften der Common Language Runtime (CLR) um zwei besondere Gruppen:

  • abhängige Eigenschaften (Dependency Properties)
  • angehängte Eigenschaften (Attached Properties)

Beide werden wie »normale« Eigenschaften verwendet, aber anders deklariert.


Galileo Computing - Zum Seitenanfang

17.5.1 Abhängige Eigenschaften Zur nächsten ÜberschriftZur vorigen Überschrift

Stellen Sie sich vor, im Auslieferungslager eines Unternehmens befindet sich der Artikel A. Mit dem Artikel ist ein bestimmter Verkaufspreis verknüpft. Wird der Artikel ins Ausland verkauft, in dem eine andere Währung Zahlungsmittel ist, muss der Verkaufspreis eventuell an den aktuellen Wechselkurs dynamisch angepasst werden. Damit wäre der Verkaufspreis der typische Fall einer abhängigen Eigenschaft.

Abhängige Eigenschaften bieten im Vergleich mit den herkömmlichen Eigenschaften Vorteile:

  • Die Werte werden automatisch aktualisiert.
  • Zur Signalisierung von Wertänderungen werden Callback-Methoden verwendet.
  • Es kann eine interne Validierung erfolgen.
  • Es können Standardwerte definiert werden.

Die Einführung von abhängigen Eigenschaften war notwendig, um die vielen WPF-Konzepte realisieren zu können, da einige davon abhängen, ob sich im System oder in der Anwendung Eigenschaftswerte verändert haben. Zu den Features, die grundlegend auf abhängige Eigenschaften angewiesen sind, gehören beispielsweise die Datenbindung, Ressourcen und Animationen.

An einem Beispiel wollen wir uns nun ansehen, wie eine abhängige Eigenschaft in einer Klasse definiert wird. Dazu definieren wir eine Klasse Line, die von DependencyObject abgeleitet wird.


class Line : DependencyObject {
  // die abhängige Eigenschaft
  public static readonly DependencyProperty LengthProperty;
  // Registrieren der abhängigen Eigenschaft
  static Line() {
    Line.LengthProperty = DependencyProperty.Register(
          "Length", typeof(int), typeof(Line), 
          new FrameworkPropertyMetadata(10, 
          new PropertyChangedCallback(OnLengthChanged)));
  }
  // Schnittstelle der Eigenschaft nach draußen
  public int Length {
    get {
      return (int)GetValue(Line.LengthProperty);
    }
    set {
      SetValue(Line.LengthProperty, value);
    }
  }
  // Callback-Methode
  private static void OnLengthChanged(DependencyObject dpObj, 
              DependencyPropertyChangedEventArgs e) {
    // ...
  }
}

Abhängige Eigenschaften sind vom Typ DependencyProperty. Sie müssen als öffentliche statische Felder definiert werden. Die Verwaltung abhängiger Eigenschaften wird vom WPF-Subsystem übernommen. Aus diesem Grund müssen abhängige Eigenschaften mit der Methode Register registriert werden. Dem Aufruf werden der Name der Eigenschaft (hier: Length), der Typ der Eigenschaft und die Klasse übergeben, die die abhängige Eigenschaft hostet. Zudem werden bei der Registrierung ein Standardwert und eine Rückrufmethode festgelegt.

In der Eigenschaftsmethode werden GetValue und SetValue aufgerufen. Beide sind Eigenschaften der Klasse DependencyObject. GetValue liefert den letzten an SetValue gelieferten Wert. Solange SetValue nicht aufgerufen worden ist, wird der Standardwert zurückgeliefert. Genau genommen muss keine Eigenschaftsmethode implementiert werden, da GetValue und SetValue öffentlich in DependencyObject definiert sind.

Von der Callback-Methode werden schließlich alle Wertänderungen überwacht.


Galileo Computing - Zum Seitenanfang

17.5.2 Angehängte Eigenschaften topZur vorigen Überschrift

Eine besondere Variante der abhängigen Eigenschaften sind die angehängten Eigenschaften (Attached Properties). Abhängige Eigenschaften sind in einem übergeordneten Element definiert. Üblicherweise handelt es sich dabei um einen Container wie beispielsweise um Grid oder StackPanel. Angehängte Eigenschaften stehen in einem untergeordneten Element zur Verfügung, ohne dass die Eigenschaft in diesem definiert ist. Der Vorteil bei diesem Verfahren ist, dass sich die Anzahl der eigentlichen Eigenschaften für die Komponente verringert.

Betrachten wir dazu ein Beispiel. In einem Grid soll eine TextBox positioniert werden. Die Eigenschaften Grid.Column und Grid.Row sind Eigenschaften, die vom Grid der TextBox zur Verfügung gestellt werden.


<Grid>
  <TextBox Grid.Column="0" Grid.Row="0" Name="txtText" >Hallo</TextBox>
</Grid>

Sie können die Position der TextBox auch mittels Code ändern, müssen dann aber die Eigenschaften SetColumn und SetRow des Grid-Controls aufrufen.


Grid.SetColumn(txtText, 1);
Grid.SetRow(txtText, 2);



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# 2010

Visual C# 2010
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 2010
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.


Nutzungsbestimmungen | Datenschutz | Impressum

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

Cookie-Einstellungen ändern