Gewusst wie: Implementieren einer Abhängigkeitseigenschaft
Dieses Beispiel zeigt, wie Sie eine common language runtime (CLR)-Eigenschaft mit einem DependencyProperty-Feld unterstützen und auf diese Weise eine Abhängigkeitseigenschaft definieren. Wenn Sie Ihre eigenen Eigenschaften definieren und möchten, dass diese viele Aspekte der Windows Presentation Foundation (WPF)-Funktionalität unterstützen, zum Beispiel Stile, Datenbindung, Vererbung, Animation und Standardwerte, sollten Sie die Eigenschaften als Abhängigkeitseigenschaften implementieren.
Beispiel
Im folgenden Beispiel wird zuerst eine Abhängigkeitseigenschaft registriert, indem die Register-Methode aufgerufen wird. Der Name des Bezeichnerfelds, das Sie zum Speichern des Namens und der Merkmale der Abhängigkeitseigenschaft verwenden, muss der Name sein, den Sie für die Abhängigkeitseigenschaft als Teil des Register-Aufrufs gewählt haben. Daran muss das Zeichenfolgenliteral Property angehängt werden. Wenn Sie zum Beispiel eine Abhängigkeitseigenschaft mit dem Name Location registrieren, muss das Bezeichnerfeld, das Sie für die Abhängigkeitseigenschaft definieren, den Namen LocationProperty haben.
In diesem Beispiel lautet der Name der Abhängigkeitseigenschaft und ihres CLR-Accessors State. Das Bezeichnerfeld ist StateProperty. Der Typ der Eigenschaft lautet Boolean, und der Typ, der die Abhängigkeitseigenschaft registriert, lautet MyStateControl.
Wenn Sie diese Konventionen der Namensgebung nicht befolgen, melden Designer Ihre Eigenschaft ggf. nicht richtig, und es kann sein, dass bestimmte Aspekte des Stilanwendungsmodus des Eigenschaftensystems sich nicht wie erwartet verhalten.
Sie können für eine Abhängigkeitseigenschaft auch Standardmetadaten angeben. Dieses Beispiel registriert den Standardwert der State Abhängigkeitseigenschaft als false.
Public Class MyStateControl
Inherits ButtonBase
Public Sub New()
MyBase.New()
End Sub
Public Property State() As Boolean
Get
Return CType(Me.GetValue(StateProperty), Boolean)
End Get
Set(ByVal value As Boolean)
Me.SetValue(StateProperty, value)
End Set
End Property
Public Shared ReadOnly StateProperty As DependencyProperty = DependencyProperty.Register("State", GetType(Boolean), GetType(MyStateControl),New PropertyMetadata(False))
End Class
public class MyStateControl : ButtonBase
{
public MyStateControl() : base() { }
public Boolean State
{
get { return (Boolean)this.GetValue(StateProperty); }
set { this.SetValue(StateProperty, value); }
}
public static readonly DependencyProperty StateProperty = DependencyProperty.Register(
"State", typeof(Boolean), typeof(MyStateControl),new PropertyMetadata(false));
}
Weitere Informationen dazu, wie und warum Sie eine Abhängigkeitseigenschaft implementieren sollten, anstatt eine CLR-Eigenschaft mit einem privaten Feld zu versehen, finden Sie unter Übersicht über Abhängigkeitseigenschaften.
Siehe auch
Konzepte
Übersicht über Abhängigkeitseigenschaften