Abhängigkeitseigenschaft

Eintrag zuletzt aktualisiert am: 17.01.2007

Abhängigkeitseigenschaften (Dependency Properties) sind eine in .NET 3.0 eingeführte erweiterte Form des normalen Property-Konzeptes. Eine Abhängigkeitseigenschaft besteht vordergründig aus einem normalen Property. Im Hintergrund liegt aber nicht wie sonst ein einfaches privates Feld (field), sondern Instanz der Klasse DependencyProperty, die von dem Eigenschaftssystem der jeweiligen Umgebung verwaltet wird.

Diese Verwaltung ist die Voraussetzung viele deklarative Möglichkeiten in XAML, insbesondere für Datenbindung, Vorlagen und Animationen. Microsoft hat sich laut eigener Aussage in WPF bemüht, möglichst viele Funktionen durch Attribute anstatt von Methoden auszurücken, um die deklarative Programmierung zu fördern. Laut Aussage von Microsoft komprimiert das Eigenschaftssystem von WPF intern die Abhängigkeitseigenschaften, um Speicher zu sparen.

Anders als die Fields bei normalen Properties sollen die Datenspeicher der Abhängigkeitseigenschaf-ten nicht als private Mitglieder, sondern als öffentliche Mitglieder angelegt werden. Dies ist die Vor-aussetzung für das Funktionieren der XAML Attached Property Syntax, widerspricht aber natürlich dem Kapselungsprinzip der Objektorientierung. Per Konvention heißt der interne Teil einer Abhän-gigkeitseigenschaft wie der öffentliche Teil mit zusätzlichem Wort "Property".

Abhängigkeitseigenschaften gibt in WPF und WF.

Beispiel für die Definition einer eigenen WPF-Abhängigkeitseigenschaft mit Namen "Zaehler":

public static readonly DependencyProperty ZaehlerProperty = DependencyProper-ty.Register("Counter", typeof(int), typeof(F_Flugbuchung), new PropertyMetadata(0));
public int Zaehler
{
get { return (int)GetValue(ZaehlerProperty); }
set { SetValue(ZaehlerProperty, value); }
}