DependencyProperty Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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(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
- Attribute
Beispiele
Dieses Beispiel zeigt eine einfache Verwendung, bei der ein 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); }
}
}
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.
Auf Instanzen von DependencyProperty
wird 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 den DependencyProperty
instance als Bezeichner verfügbar, der ein statisches Element der Besitzerklasse ist.
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 GetType
in Microsoft Visual Basic . 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 einen
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 diesesDependencyProperty
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
get
undset
Accessoren 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 DependencyProperty
statischen 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 Hilfsmethoden für das Windows-Runtime Eigenschaftensystem sind, die einen DependencyProperty
Wert als Eingabeparameter verwenden. Dazu zählen unter anderem folgende Einstellungen:
- DependencyObject.ClearValue
- DependencyObject.GetAnimationBaseValue
- DependencyObject.GetValue
- DependencyObject.ReadLocalValue
- DependencyObject.SetValue
- DependencyPropertyChangedEventArgs.Property
- Setter(DependencyProperty,Object)-Konstruktor
Eigenschaften
UnsetValue |
Gibt einen statischen Wert an, der vom Eigenschaftensystem verwendet wird, anstatt |
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. |