Sdílet prostřednictvím


Postup registrace připojené vlastnosti (WPF .NET)

Tento článek popisuje, jak zaregistrovat připojenou vlastnost a poskytnout veřejné přístupové objekty, které umožňují přístup k připojené vlastnosti prostřednictvím jazyka XAML (Extensible Application Markup Language) a kódu. Připojené vlastnosti umožňují nastavení párů extra property/value u libovolného elementu XAML, i když element nedefinuje tyto dodatečné vlastnosti v objektovém modelu. Další vlastnosti jsou globálně přístupné. Připojené vlastnosti jsou obvykle definovány jako specializovaná forma vlastnosti závislosti, která nemá konvenční obálku vlastností. Většina připojených vlastností pro typy WPF (Windows Presentation Foundation) jsou také implementovány jako vlastnosti závislosti. Vlastnosti závislostí můžete vytvořit pro libovolný DependencyObject odvozený typ.

Příklad

Následující příklad ukazuje, jak zaregistrovat připojenou vlastnost jako vlastnost závislosti pomocí RegisterAttached metoda. Třída zprostředkovatele má možnost zadat výchozí hodnotu v metadatech vlastnosti. Další informace o metadatech závislých vlastností naleznete v tématu Metadata závislých vlastností. V tomto příkladu má vlastnost HasFish typ hodnoty Boolean s výchozí hodnotou nastavenou na false.

Třída poskytovatele pro připojenou vlastnost musí poskytovat statické přístupové metody get/set, které se řídí pojmenovací konvencí Get<property name> a Set<property name>. Čtečka XAML rozpozná atribut XAML pro připojenou vlastnost pomocí přístupových objektů a přeloží jeho hodnotu na příslušný typ. Tyto přístupové objekty jsou nezbytné i v případě, že připojená vlastnost není zaregistrovaná jako závislá vlastnost.

public class Aquarium : UIElement
{
    // Register an attached dependency property with the specified
    // property name, property type, owner type, and property metadata.
    public static readonly DependencyProperty HasFishProperty =
        DependencyProperty.RegisterAttached(
          "HasFish",
          typeof(bool),
          typeof(Aquarium),
          new FrameworkPropertyMetadata(defaultValue: false,
              flags: FrameworkPropertyMetadataOptions.AffectsRender)
        );

    // Declare a get accessor method.
    public static bool GetHasFish(UIElement target) =>
        (bool)target.GetValue(HasFishProperty);

    // Declare a set accessor method.
    public static void SetHasFish(UIElement target, bool value) =>
        target.SetValue(HasFishProperty, value);
}
Public Class Aquarium
    Inherits UIElement

    ' Register an attached dependency property with the specified
    ' property name, property type, owner type, and property metadata.
    Public Shared ReadOnly HasFishProperty As DependencyProperty =
        DependencyProperty.RegisterAttached("HasFish", GetType(Boolean), GetType(Aquarium),
            New FrameworkPropertyMetadata(defaultValue:=False,
                flags:=FrameworkPropertyMetadataOptions.AffectsRender))

    ' Declare a get accessor method.
    Public Shared Function GetHasFish(target As UIElement) As Boolean
        Return target.GetValue(HasFishProperty)
    End Function

    ' Declare a set accessor method.
    Public Shared Sub SetHasFish(target As UIElement, value As Boolean)
        target.SetValue(HasFishProperty, value)
    End Sub

End Class

Viz také