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 26 Dependency Properties
Pfeil 26.1 Die Charakteristik von Abhängigkeitseigenschaften
Pfeil 26.2 Den Wert einer Abhängigkeitseigenschaft bilden
Pfeil 26.3 Definition einer Dependency Property
Pfeil 26.3.1 Registrieren einer Abhängigkeitseigenschaft
Pfeil 26.3.2 Der Eigenschaftswrapper
Pfeil 26.3.3 Die Eigenschaftsmetadaten
Pfeil 26.3.4 Freigabe des spezifischen Eigenschaftswertes
Pfeil 26.3.5 Vererbung von Abhängigkeitseigenschaften
Pfeil 26.4 Validieren einer Abhängigkeitseigenschaft
Pfeil 26.4.1 Validieren mit »ValidateValueCallback«
Pfeil 26.4.2 Validieren mit »CoerceValueCallback«
Pfeil 26.5 Angehängte Eigenschaften (Attached Property)
Pfeil 26.5.1 Angehängte Eigenschaften zur Laufzeit ändern

Galileo Computing - Zum Seitenanfang

26.5 Angehängte Eigenschaften (Attached Property)Zur nächsten Überschrift

Angehängte Eigenschaften werden vom Konstrukt her auch als DependencyProperty implementiert, zeigen aber eine andere Verhaltensweise. Angehängte Eigenschaften werden nämlich nicht im Objekt selbst abgelegt, sondern in den Objekten anderer Klassen. Dies wird insbesondere bei den Layout-Containern praktiziert, wenn eine Abhängigkeitseigenschaft vom Layout-Container an das untergeordnete Element weitergegeben wird.

Das folgende Codefragment zeigt einen typischen Einsatzfall. Innerhalb eines Grid-Steuerelements ist eine Schaltfläche in der zweiten Zeile und der zweiten Spalte des Grid platziert.

<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Button Name="btnButton" Grid.Column="1" Grid.Row="1" />
</Grid>

Listing 26.16 Typischer Einsatz einer angehängten Eigenschaft

Um den Button passend zu positionieren, wird den beiden angehängten Eigenschaften Grid.Column und Grid.Row der entsprechende Spalten- und Zeilenindex übergeben. Grid.Column und Grid.Row sind keine Eigenschaften der Schaltfläche, sondern werden der Schaltfläche durch das Grid-Objekt hinzugefügt.

Wir wollen uns das Konzept der angehängten Eigenschaften am Beispiel der Grid.Column-Eigenschaft ansehen.

public class Grid : DependencyObject {
public static readonly DependencyProperty ColumnProperty;

static Grid() {

FrameworkPropertyMetadata metadata = new FrameworkPropertyMetadata(0);
Grid.ColumnProperty = DependencyProperty.RegisterAttached("Column",
typeof(int), typeof(Grid), metadata);

}

public static int GetColumn(UIElement element) {
if (element == null) throw new ArgumentNullException();
return (int)element.GetValue(Grid.ColumnProperty);
}

public static void SetColumn(UIElement element, int value)
{
if (element == null) throw new ArgumentNullException();
element.SetValue(Grid.ColumnProperty, value);
}

}

Listing 26.17 Definition der angehängten Eigenschaft »Grid.Column«

Der Code soll keinen Anspruch auf Vollständigkeit erheben. Beispielsweise zeigt er keinerlei Validierungen, um eine gültige Indexposition zu gewährleisten.

Eine angehängte Eigenschaft zu definieren ähnelt der Definition einer Abhängigkeitseigenschaft. Allerdings wird eine angehängte Eigenschaft mit der Methode RegisterAttach beim WPF-Subsystem registriert. Ein FrameworkPropertyMetadata-Objekt sorgt auch hier für individuelle Einstellungen der angehängten Eigenschaft.

Angehängte Eigenschaften weisen keinen Eigenschaftswrapper auf. Stattdessen werden zwei statische Methoden bereitgestellt, um den Eigenschaftswert zu setzen bzw. auszuwerten. Die Methodenbezeichner sollten dem Muster Set<Eigenschaftsname> und Get<Eigenschaftsname> folgen. Intern rufen die beiden Methoden die von DependencyObject geerbten Methoden SetValue und GetValue auf.

Visual Studio 2012 bietet auch für angehängte Eigenschaften ein Code-Snippet an, um das Grundgerüst einer Attached Property zu erstellen. Geben Sie dazu einfach in der Klasse propa ein, und drücken Sie anschließend die Tabulator-Taste.


Galileo Computing - Zum Seitenanfang

26.5.1 Angehängte Eigenschaften zur Laufzeit ändernZur vorigen Überschrift

Zur Festlegung eines Wertes im XAML-Code sind die Eigenschaften SetColumn bzw. SetRow eines Grid-Steuerelements nicht geeignet. Sie lassen sich aber dazu benutzen, um mit C#-Code zur Laufzeit einen neuen Wert zu setzen. Soll der zu Beginn dieses Abschnitts gezeigte Button beispielsweise von der Zeile mit dem Index 1 in die Zeile mit dem Index 0 verschoben werden, genügt die folgende Anweisung:

btnButton.SetValue(Grid.RowProperty, 0);

Listing 26.18 Ändern einer angehängten Eigenschaft



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