Megosztás a következőn keresztül:


Függőségi tulajdonság implementálása

Ez a cikk azt ismerteti, hogyan implementálhat függőségi tulajdonságot egy DependencyProperty mező használatával egy közös nyelvi futtatókörnyezeti (CLR) tulajdonság háttérrendszeréhez. A függőségi tulajdonságok számos speciális Windows Presentation Foundation (WPF) tulajdonságrendszer-funkciót támogatnak. Ezek a funkciók közé tartoznak a stílusok, az adatkötés, az öröklés, az animáció és az alapértelmezett értékek. Ha azt szeretné, hogy az Ön által definiált tulajdonságok támogassák ezeket a funkciókat, akkor a tulajdonságokat függőségi tulajdonságként implementálja.

példa

Az alábbi példa bemutatja, hogyan regisztrálhat függőségi tulajdonságot a Register metódus meghívásával. A Register metódus visszaad egy DependencyProperty példányt, amelyet függőségi tulajdonság-azonosítónak hívnaknéven. Az azonosító egy static readonly mezőben van tárolva, és egy függőségi tulajdonság nevét és jellemzőit tartalmazza.

Az azonosító mezőnek követnie kell az elnevezési konvenció <property name>Property. Ha például egy függőségi tulajdonságot regisztrál Locationnéven, akkor az azonosító mező neve LocationProperty. Ha nem követi ezt az elnevezési mintát, akkor előfordulhat, hogy a WPF-tervezők nem megfelelően jelentik a tulajdonságot, és előfordulhat, hogy a tulajdonságrendszer-stílusalkalmazás elemei nem a várt módon viselkednek.

Az alábbi példában a függőségi tulajdonság és a CLR-tartozék neve , így az azonosító mező neve . A függőségi tulajdonság típusa Boolean, a függőségi tulajdonságot regisztráló tulajdonostípus pedig Aquarium.

Megadhat alapértelmezett metaadat- függőségi tulajdonsághoz. Ez a példa a false függőségi tulajdonság alapértelmezett HasFish értékét állítja be.

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

Ha többet szeretne megtudni arról, hogyan és miért érdemes implementálni egy függőségi tulajdonságot ahelyett, hogy csak egy CLR tulajdonságot támogatna egy privát mezővel, tekintse meg a Függőségi tulajdonságok áttekintésecímű témakört.

Lásd még