Freigeben über


DependencyProperty Klasse

Definition

Stellt eine Abhängigkeitseigenschaft dar, die beim Abhängigkeitseigenschaftensystem registriert ist. Abhängigkeitseigenschaften bieten Unterstützung für Wertausdrücke, Datenbindung, Animation und Benachrichtigungen zu Eigenschaftenänderungen. Weitere Informationen dazu, wie DependencyProperty-Werte als Bezeichner für Abhängigkeitseigenschaften dienen, finden Sie unter Übersicht über Abhängigkeitseigenschaften.

public ref class DependencyProperty sealed
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class DependencyProperty final
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class DependencyProperty
Public NotInheritable Class DependencyProperty
See Remarks
Vererbung
Object Platform::Object IInspectable DependencyProperty
Attribute

Windows-Anforderungen

Gerätefamilie
Windows 10 (eingeführt in 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (eingeführt in v1.0)

Beispiele

Dieses Beispiel zeigt eine einfache Verwendung, bei der eine DependencyProperty als öffentliches statisches Element einer Klasse eingerichtet wird. Dazu rufen Sie Register auf und speichern den Rückgabewert als Member der -Klasse. Weitere Beispiele finden Sie unter Benutzerdefinierte Abhängigkeitseigenschaften.

public class Fish : Control
{
    public static readonly DependencyProperty SpeciesProperty =
    DependencyProperty.Register(
    "Species",
    typeof(String),
    typeof(Fish), null
    );
    public string Species
    {
        get { return (string)GetValue(SpeciesProperty); }
        set { SetValue(SpeciesProperty, (string)value); }
    }
}
Public Class Fish
    Inherits Control

    Public Shared ReadOnly SpeciesProperty As DependencyProperty = _
    DependencyProperty.Register(
    "Species", _
    GetType(String), _
    GetType(Fish), _
    Nothing)
    Public Property Species As String
        Get
            Species = CType(GetValue(SpeciesProperty), String)
        End Get
        Set(value As String)
            SetValue(SpeciesProperty, value)
        End Set
    End Property
End Class

Ein Beispiel für Visual C++-Komponentenerweiterungen (C++/CX) wird hier nicht gezeigt, da es völlig anders als die Microsoft .NET-Beispiele berücksichtigt werden muss und mehrere verschiedene Codedateien umfasst. Siehe Beispiele unter Benutzerdefinierte Abhängigkeitseigenschaften.

Hinweise

Konzepte von Abhängigkeitseigenschaften werden im Thema Abhängigkeitseigenschaften übersicht ausführlich behandelt.

Instanzen von DependencyProperty werden in der Dokumentation häufig als Abhängigkeitseigenschaftsbezeichner verwiesen. Die Bezeichner bieten eine Möglichkeit, auf eine Abhängigkeitseigenschaft zu verweisen, die für einen bestimmten DependencyObject-Besitzertyp registriert wurde. Wenn der Besitzertyp die Eigenschaft registriert, macht der Besitzertyp die DependencyProperty-instance als Bezeichner verfügbar, ein statisches Element der Besitzerklasse.

Der Besitzer DependencyObject stellt den Eigenschaftenspeicher für die Abhängigkeitseigenschaft bereit. Wenn Sie mit einer Abhängigkeitseigenschaft im Code arbeiten, können Sie einen DependencyProperty-Bezeichner als Eingabe für Aufrufe von Eigenschaftensystemmethoden wie SetValue verwenden. In den meisten Fällen ist das Abrufen oder Festlegen einer Abhängigkeitseigenschaft jedoch einfacher, indem sie den Wrapper abrufen oder festlegen. Dieses Konzept wird in der Übersicht über Abhängigkeitseigenschaften erläutert.

DependencyProperty unterstützt eine native Konvertierung für XAML-Attributsyntax zum Füllen von Werten, die verwendet wird, wenn ein Setter seinen Eigenschaftswert angibt. Diese Konvertierung verwendet das Formular ownerTypeName**.**propertyName für die Eingabezeichenfolge.

Hinweis

Eine verwandte Syntax, die auch zum Angeben einer Eigenschaft nach Namen verwendet werden kann und für bestimmte Daten- und Animations-API erforderlich ist, ist die Eigenschaftenpfadsyntax. Ein Eigenschaftenpfad kann verwendet werden, um auf die Struktur einer Klasse mit Eigenschaften und dem Wert dieser Eigenschaft zu verweisen. Weitere Informationen finden Sie unter Property-path-Syntax.

Tipp

Wenn Sie mit einer Microsoft .NET-Sprache (C# oder Microsoft Visual Basic) programmieren, wird der TypeName-Typ als System.Type ausgeführt. Bei der Programmierung mit C# ist es üblich, den Typeof-Operator zu verwenden, um Verweise auf den System.Type eines Typs abzurufen. Verwenden Sie in Microsoft Visual Basic GetType. Wenn Sie Visual C++-Komponentenerweiterungen (C++/CX) verwenden, wo Sie eine TypeName-Hilfsstruktur erstellen müssen, können Sie die TypeId-Komponentenerweiterung verwenden.

Die Windows-Runtime implementiert das Feature für xaml angefügte Eigenschaften mit DependencyProperty-Bezeichnern und Eigenschaftenspeicher für ein DependencyObject. Weitere Informationen finden Sie unter Übersicht über angefügte Eigenschaften.

Benutzerdefinierte Abhängigkeitseigenschaften

Wenn Eigenschaften für Ihre benutzerdefinierten Typen Wertausdrücke, Datenbindung oder Animation unterstützen sollen, sollten Sie die Eigenschaften gemäß den folgenden Richtlinien mit einer Abhängigkeitseigenschaft sichern:

  • Registrieren Sie eine Abhängigkeitseigenschaft mithilfe der Register-Methode , die eine DependencyProperty zurückgibt. Dies ist Ihr Abhängigkeitseigenschaftsbezeichner. Sie sollten dieses Objekt als statische schreibgeschützte Eigenschaft in Ihrer Klasse verfügbar machen. Gemäß der Konvention sollte der Name dieses DependencyProperty-Bezeichnerfelds mit "Property" enden.
  • Während der Registrierung können Sie PropertyMetadata für die Eigenschaft angeben, um das Verhalten der Eigenschaft weiter zu definieren.
  • Bereitstellen von Get - und Set-Accessors für die Eigenschaft: Dies sind die Eigenschaften wrapper und vereinfachen den Zugriff auf Ihre Eigenschaft für alle Aufrufer.

XAML-Verweise auf einen Abhängigkeitseigenschaftsnamen

Einige Eigenschaften, die normalerweise im XAML-Markup festgelegt werden, verwenden DependencyProperty als Wert. Beispielsweise legen Sie Setter.Property in XAML fest. Um eine solche Eigenschaft in XAML festzulegen, geben Sie den Namen der Abhängigkeitseigenschaft als Attributwert an.

Für Setter.Property ist der Typ, von dem sie auf den Namen der Abhängigkeitseigenschaft verweisen, bereits durch den TargetType des Stils , in dem der Setter vorhanden ist, definiert. Für eine Abhängigkeitseigenschaft für das TargetType-Objekt können Sie einen Setter.Property-Wert angeben, indem Sie den einfachen Namen der Abhängigkeitseigenschaft verwenden. Wenn Sie beispielsweise über eine Formatvorlage verfügen, die auf einen Schieberegler abzielt, und Sie die Orientation-Eigenschaft formatieren möchten, kann der Eigenschaftsattributwert nur "Ausrichtung" lauten. Einfache Namen funktionieren auch, solange die Abhängigkeitseigenschaft von einer Klasse in der tieferen Vererbung des Zieltyps stammt. Um z. B. die Visibility-Eigenschaft im Style für einen Schieberegler zu formatieren, funktioniert der Eigenschaftsattributwert "Visibility". In diesem Fall wurde Visibility von UIElement definiert, erbt aber an Slider.

Sie können setter.Property auch verwenden, um auf einen angefügten Eigenschaftennamen zu verweisen. Verwenden Sie für den Attributwert das Formular AttachedPropertyOwner.AttachedPropertyName, genau wie Sie verwenden würden, um diese angefügte Eigenschaft als Attribut in XAML festzulegen. Hier ist beispielsweise ein Setter , der die angefügte Eigenschaft AutomationProperties.ItemType in einem Style festlegt: <Setter Property="AutomationProperties.ItemType" Value="Navigation Button"/>

Hinweis

Der Name einer Abhängigkeitseigenschaft ist nicht der Name des bezeichners der statischen DependencyProperty-Eigenschaft. Es ist die Namenszeichenfolge, mit der die Eigenschaft registriert ist, und der Name, der der typische Verwendungsname für diese Eigenschaft in Windows-Runtime Programmierung ist, wenn er von Microsoft IntelliSense und der Referenzdokumentation verfügbar gemacht wird. Mit anderen Worten, Sie möchten nicht, dass die Zeichenfolge, die Sie für Setter.Property in XAML angeben, mit "Property" endet (mit Ausnahme einiger seltener Fälle, in denen die Abhängigkeitseigenschaft tatsächlich das Suffix "Property" enthält).

Verwenden einer DependencyProperty (Dependency-Eigenschaftsbezeichner) im Code

Es gibt mehrere Methoden, die Hilfsprogrammmethoden für das Windows-Runtime Eigenschaftensystem sind, die einen DependencyProperty-Wert als Eingabeparameter verwenden. Dazu zählen unter anderem folgende Einstellungen:

Eigenschaften

UnsetValue

Gibt einen statischen Wert an, der vom Eigenschaftensystem anstelle von NULL verwendet wird, um anzugeben, dass die Eigenschaft vorhanden ist, deren Wert jedoch nicht vom Eigenschaftensystem oder von einem App-Code festgelegt wird.

Methoden

GetMetadata(TypeName)

Ruft den Wert der Eigenschaftsmetadaten für die Abhängigkeitseigenschaft ab, wie sie für einen Typ registriert ist. Sie geben den Typ an, von dem Sie Informationen als Typverweis benötigen.

Register(String, TypeName, TypeName, PropertyMetadata)

Registriert eine Abhängigkeitseigenschaft mit dem angegebenen Eigenschaftennamen, Eigenschaftentyp, Besitzertyp und Eigenschaftenmetadaten für die Eigenschaft. Verwenden Sie diese Methode beim Definieren oder Initialisieren einer von DependencyObject abgeleiteten Klasse, die die registrierte Abhängigkeitseigenschaft besitzt.

RegisterAttached(String, TypeName, TypeName, PropertyMetadata)

Registriert eine angefügte Abhängigkeitseigenschaft mit dem angegebenen Eigenschaftennamen, Eigenschaftentyp, Besitzertyp und Eigenschaftenmetadaten für die Eigenschaft.

Gilt für:

Weitere Informationen