Registrera en bifogad egenskap (WPF .NET)
Den här artikeln beskriver hur du registrerar en bifogad egenskap och tillhandahåller offentliga åtkomstfunktioner som gör att du kan komma åt den anslutna egenskapen via XAML (Extensible Application Markup Language) och kod. Med anslutna egenskaper kan extra egenskaps-/värdepar anges för alla XAML-element, även om elementet inte definierar de extra egenskaperna i objektmodellen. De extra egenskaperna är globalt tillgängliga. Anslutna egenskaper definieras vanligtvis som en specialiserad form av beroendeegenskap som inte har en konventionell egenskapsomslutning. De flesta bifogade egenskaper för WPF-typer (Windows Presentation Foundation) implementeras också som beroendeegenskaper. Du kan skapa beroendeegenskaper för valfri DependencyObject härledd typ.
Exempel
I följande exempel visas hur du registrerar en bifogad egenskap som en beroendeegenskap med hjälp av metoden RegisterAttached. Providerklassen har möjlighet att ange ett standardvärde i egenskapsmetadata. Mer information om egenskapsmetadata finns i Beroendeegenskapsmetadata. I det här exemplet har egenskapen HasFish
en Boolean värdetyp med standardvärdet inställt på false
.
Providerklassen för en ansluten egenskap måste tillhandahålla statiska get/set-åtkomstmetoder som följer namngivningskonventionen Get<property name>
och Set<property name>
. XAML-läsaren använder aksesorerna för att identifiera XAML-attributet för den bifogade egenskapen och matcha dess värde till lämplig typ. Dessa accessorer är nödvändiga även om en bifogad egenskap inte är registrerad som en beroendeegenskap.
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
Se även
.NET Desktop feedback