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(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
- 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:
- 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 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. |