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 pomocí metody zaregistrovat připojenou vlastnost jako vlastnost RegisterAttached závislosti. Třída zprostředkovatele má možnost zadat výchozí hodnotu v metadatech vlastnosti. Další informace o metadatech vlastností naleznete v tématu Metadata vlastností závislostí. V tomto příkladu HasFishBoolean vlastnost typ hodnoty s výchozí hodnotou nastavenou na false.

Třída zprostředkovatele připojené vlastnosti musí poskytovat statické metody get/set accessor, které se řídí konvencí Get<property name> pojmenování 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 vlastnost závislosti.

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é