Dela via


Implementera en beroendeegenskap (WPF .NET)

Den här artikeln beskriver hur du implementerar en beroendeegenskap med hjälp av ett DependencyProperty fält för att stödja en CLR-egenskap (Common Language Runtime). Beroendeegenskaper har stöd för flera avancerade funktioner för WPF-egenskapssystem (Windows Presentation Foundation). Dessa funktioner omfattar format, databindning, arv, animering och standardvärden. Om du vill att egenskaper som du definierar ska stödja dessa funktioner implementerar du dina egenskaper som en beroendeegenskap.

Exempel

I följande exempel visas hur du registrerar en beroendeegenskap genom att anropa metoden Register. Metoden Register returnerar en DependencyProperty-instans som kallas beroendeegenskapsidentifierare. Identifieraren lagras i ett static readonly fält och innehåller namnet och egenskaperna för en beroendeegenskap.

Fältet identifierare måste följa namngivningskonventionen <property name>Property. Om du till exempel registrerar en beroendeegenskap med namnet Locationska identifierarfältet namnges LocationProperty. Om du inte följer det här namngivningsmönstret kanske WPF-designers inte rapporterar din egenskap korrekt, och aspekter av stilanvändningen av egenskapssystemet kanske inte fungerar som förväntat.

I följande exempel är namnet på beroendeegenskapen och dess CLR-accessor HasFish, så identifierarfältet heter HasFishProperty. Beroendeegenskapstypen är Boolean och ägartypen som registrerar beroendeegenskapen är Aquarium.

Du kan ange standard metadata för en beroendeegenskap. I det här exemplet anges standardvärdet false för HasFish beroendeegenskap.

public class Aquarium : DependencyObject
{
    public static readonly DependencyProperty HasFishProperty =
        DependencyProperty.Register(
            name: "HasFish",
            propertyType: typeof(bool),
            ownerType: typeof(Aquarium),
            typeMetadata: new FrameworkPropertyMetadata(defaultValue: false));

    public bool HasFish
    {
        get => (bool)GetValue(HasFishProperty);
        set => SetValue(HasFishProperty, value);
    }
}
Public Class Aquarium
    Inherits DependencyObject

    Public Shared ReadOnly HasFishProperty As DependencyProperty =
    DependencyProperty.Register(
        name:="HasFish",
        propertyType:=GetType(Boolean),
        ownerType:=GetType(Aquarium),
        typeMetadata:=New FrameworkPropertyMetadata(defaultValue:=False))

    Public Property HasFish As Boolean
        Get
            Return GetValue(HasFishProperty)
        End Get
        Set(value As Boolean)
            SetValue(HasFishProperty, value)
        End Set
    End Property

End Class

Mer information om hur och varför du ska implementera en beroendeegenskap i stället för att endast använda en CLR-egenskap med ett privat fält finns i Översikt över beroendeegenskaper.

Se även