Dela via


Så här implementerar du en beroendeegenskap

Det här exemplet visar hur du säkerhetskopierar en CLR-egenskap (Common Language Runtime) med ett DependencyProperty fält, vilket definierar en beroendeegenskap. När du definierar dina egna egenskaper och vill att de ska ha stöd för många aspekter av WPF-funktioner (Windows Presentation Foundation), inklusive format, databindning, arv, animering och standardvärden, bör du implementera dem som en beroendeegenskap.

Exempel

I följande exempel registreras först en beroendeegenskap genom att anropa metoden Register. Namnet på det identifierarfält som du använder för att lagra namnet och egenskaperna för beroendeegenskapen måste vara den Name du valde för beroendeegenskapen som en del av Register-anropet, som läggs till av strängen literal Property. Om du till exempel registrerar en beroendeegenskap med en NameLocationmåste det identifierarfält som du definierar för beroendeegenskapen namnges LocationProperty.

I det här exemplet är namnet på beroendeegenskapen och dess CLR-accessor State; identifierarfältet är StateProperty; egenskapens typ är Boolean; och typen som registrerar beroendeegenskapen är MyStateControl.

Om du inte följer det här namngivningsmönstret kanske designers inte rapporterar ditt attribut korrekt, och vissa aspekter av hur egenskapssystemets stilar tillämpas kanske inte fungerar som förväntat.

Du kan också ange standardmetadata för en beroendeegenskap. Det här exemplet registrerar standardvärdet för beroendeegenskapen State till 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

För mer information om hur och varför du implementerar beroendeegenskaper, istället för att endast stödja en CLR-egenskap med ett privat fält, se Översikt över beroendeegenskaper.

Se även