Freigeben über


Gewusst wie: Implementieren einer Abhängigkeitseigenschaft

Dieses Beispiel zeigt, wie Sie eine Common Language Runtime (CLR)-Eigenschaft mit einem DependencyProperty-Feld verknüpfen und so eine Abhängigkeitseigenschaft definieren. Wenn Sie eigene Eigenschaften definieren und diese viele Aspekte der Windows Presentation Foundation- (WPF)-Funktionalität unterstützen sollen, einschließlich Stile, Datenbindung, Vererbung, Animation und Standardwerte, müssen Sie sie als eine Abhängigkeitseigenschaft implementieren.

Beispiel

Im folgenden Beispiel wird zunächst eine Abhängigkeitseigenschaft registriert, indem die Register-Methode aufgerufen wird. Der Name des Bezeichnerfelds, den Sie zum Speichern der Namen und Eigenschaften der Abhängigkeitseigenschaft verwenden, muss die Name-Eigenschaft sein, die Sie für die Abhängigkeitseigenschaft als Teil des Register-Aufrufs auswählen, angefügt durch das Zeichenfolgenliteral Property. Wenn Sie z.B. eine Abhängigkeitseigenschaft mit einer Name von Location registrieren, dann muss das Bezeichnerfeld, das Sie für die Abhängigkeitseigenschaft definieren, LocationProperty genannt werden.

In diesem Beispiel lautet der Name der Abhängigkeitseigenschaft und dessen CLR-Accessor State; das Bezeichnerfeld ist StateProperty, der Typ der Eigenschaft ist Boolean, und der Typ, der die Abhängigkeitseigenschaft registriert, ist MyStateControl.

Wenn Sie dieses Benennungsmuster nicht befolgen, melden Designer Ihre Eigenschaft womöglich nicht ordnungsgemäß, und bestimmte Aspekte der Stilanwendung des Eigenschaftensystems verhalten sich möglicherweise anders als erwartet.

Sie können auch die standardmäßigen Metadaten für eine Abhängigkeitseigenschaft angeben. Dieses Beispiel registriert den Standardwert der State-Abhängigkeitseigenschaft als false.

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));
}
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

Weitere Informationen dazu, wie und warum eine Abhängigkeitseigenschaft implementiert wird, anstatt eine CLR-Eigenschaft nur mit einem privaten Feld zu sichern, finden Sie unter Übersicht über Abhängigkeitseigenschaften.

Weitere Informationen