DependencyProperty Klasse

Definition

Stellt eine Abhängigkeitseigenschaft dar, die beim Abhängigkeitseigenschaftssystem registriert ist. Abhängigkeitseigenschaften bieten Unterstützung für Wertausdrücke, Datenbindung, Animation und Eigenschaftsänderungsbenachrichtigung. Weitere Informationen dazu, wie DependencyProperty-Werte als Bezeichner für Abhängigkeitseigenschaften dienen, finden Sie in der Übersicht über Abhängigkeitseigenschaften.

public ref class DependencyProperty sealed
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 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(Microsoft.UI.Xaml.WinUIContract), 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
Vererbung
Object Platform::Object IInspectable DependencyProperty
Attribute

Beispiele

Dieses Beispiel zeigt eine grundlegende Verwendung, bei der ein DependencyProperty öffentliches statisches Element einer Klasse eingerichtet wird. Dazu rufen Sie Register auf und speichern den Rückgabewert als Mitglied 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); }
    }
}

Hinweise

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

Instanzen von DependencyProperty werden häufig in der Dokumentation als Abhängigkeitseigenschaftsbezeichner referenziert. 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 Instanz als Bezeichner verfügbar, bei dem es sich um ein statisches Mitglied der Besitzerklasse handelt.

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 der Wrapper aufgerufen oder festgelegt wird. Dieses Konzept wird in der Übersicht über Abhängigkeitseigenschaften erläutert.

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

Hinweis

Eine verwandte Syntax, die auch zum Angeben einer Eigenschaft anhand des Namens verwendet werden kann und für bestimmte Daten und Animations-API erforderlich ist, ist die Syntax des Eigenschaftspfads. Ein Eigenschaftspfad 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.

Tip

Wenn Sie eine Microsoft .NET Sprache (C#) programmieren, wird der TypeName-Typ als "System.Type" projiziert. Bei der Programmierung mit C# wird häufig der typeof Operator verwendet, um Verweise auf den System.Type eines Typs abzurufen.

Wenn Sie C++/WinRT verwenden, können Sie mithilfe der winrt::xaml_typename<T>() Hilfsfunktion ein TypeName Objekt erstellen. Weitere Informationen und ein Codebeispiel finden Sie unter winrt::xaml_typename Funktionsvorlage .

Die Windows-Runtime implementiert das XAML-Feature für angefügte Eigenschaftensprache 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 Werteausdrücke, Datenbindung oder Animation unterstützen sollen, sollten Sie die Eigenschaften mit einer Abhängigkeitseigenschaft wie folgt sichern:

  • Registrieren Sie eine Abhängigkeitseigenschaft mithilfe der Register-Methode , die eine DependencyProperty. Dies ist Ihre Abhängigkeitseigenschafts-ID. Sie sollten dieses Objekt als barrierefreie statische schreibgeschützte Eigenschaft in Ihrer Klasse verfügbar machen. Standardmäßig sollte der Name dieses DependencyProperty Bezeichnerfelds mit "Property" enden.
  • Während der Registrierung können Sie PropertyMetadata für die Eigenschaft bereitstellen, um das Verhalten der Eigenschaft weiter zu definieren.
  • Bereitstellen get und set Accessoren für die Eigenschaft: Dies sind die Eigenschaftenwrapper und vereinfachen den Zugriff auf Ihre Eigenschaft für alle Aufrufer.

XAML-Verweise auf einen Abhängigkeitseigenschaftsnamen

Einige Eigenschaften, die in der Regel im XAML-Markup festgelegt werden, werden als Wert verwendet DependencyProperty . 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 einen Abhängigkeitseigenschaftsnamen verweisen, bereits auf den TargetType des Stils festgelegt, in dem der Setter vorhanden ist. Für eine Abhängigkeitseigenschaft für das TargetType-Objekt können Sie einen Setter.Property-Wert mithilfe des einfachen Namens der Abhängigkeitseigenschaft angeben. Wenn Sie beispielsweise über eine Formatvorlage verfügen, die auf einen Schieberegler ausgerichtet ist und Sie die Orientation-Eigenschaft formatieren möchten, kann der Wert des Property-Attributs einfach "Orientation" lauten. Einfache Namen funktionieren auch, solange die Abhängigkeitseigenschaft aus einer Klasse in der tieferen Vererbung des Zieltyps stammt. Um beispielsweise die Visibility-Eigenschaft im Style für einen Schieberegler zu formatieren, funktioniert ein Eigenschaft-Attributwert von "Visibility". In diesem Fall wurde Visibility durch UIElement definiert, erbt jedoch an Slider.

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

Hinweis

Der Name einer Abhängigkeitseigenschaft ist nicht der Name des DependencyProperty statischen Eigenschaftenbezeichners. Es handelt sich um die Namenszeichenfolge, bei der die Eigenschaft registriert ist, und den Namen, bei dem es sich um den typischen Verwendungsnamen für diese Eigenschaft in Windows-Runtime Programmierung handelt, wenn sie von Microsoft IntelliSense und der Referenzdokumentation verfügbar gemacht wird. Anders ausgedrückt: Sie möchten nicht, dass die Zeichenfolge, die Sie für Setter.Property in XAML angeben, mit "Property" enden soll (mit Ausnahme einiger seltener Fälle, in denen die Abhängigkeitseigenschaft tatsächlich das Suffix "Property" enthält).

Verwenden einer DependencyProperty (Abhängigkeitseigenschafts-ID) im Code

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

Eigenschaften

Name Beschreibung
UnsetValue

Gibt einen statischen Wert an, der vom Eigenschaftensystem verwendet wird, anstatt null anzugeben, dass die Eigenschaft vorhanden ist, aber nicht über seinen Wert vom Eigenschaftensystem oder von App-Code festgelegt ist.

Methoden

Name Beschreibung
GetMetadata(TypeName)

Ruft den Eigenschaftsmetadatenwert für die Abhängigkeitseigenschaft ab, die für einen Typ registriert ist. Sie geben den Gewünschten Typ als Typverweis an.

Register(String, TypeName, TypeName, PropertyMetadata)

Registriert eine Abhängigkeitseigenschaft mit dem angegebenen Eigenschaftennamen, Eigenschaftentyp, Besitzertyp und Eigenschaftsmetadaten für die Eigenschaft. Verwenden Sie diese Methode, wenn Sie eine abgeleitete DependencyObject-Klasse definieren oder initialisieren, die die registrierte Abhängigkeitseigenschaft besitzt.

RegisterAttached(String, TypeName, TypeName, PropertyMetadata)

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

Gilt für:

Weitere Informationen