Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Det här exemplet visar hur du lägger till en klass som ägare av en beroendeegenskap som registrerats för en annan typ. Genom att göra detta kan både WPF XAML-läsaren och egenskapssystemet känna igen klassen som en ytterligare ägare av egenskapen. Om du lägger till som ägare kan du välja att lägga till klassen för att tillhandahålla typspecifika metadata.
I följande exempel är StateProperty en egenskap som registrerats av klassen MyStateControl. Klassen UnrelatedStateControl lägger till sig själv som ägare av StateProperty med hjälp av metoden AddOwner, särskilt med hjälp av signaturen som möjliggör nya metadata för beroendeegenskapen eftersom den finns på tilläggstypen. Observera att du bör tillhandahålla åtkomstmetoder för Common Language Runtime (CLR) för egenskapen, liknande det exempel som visas i Implementera en beroendeegenskap, samt exponera beroendeegenskapsidentifieraren på den klass som läggs till som dess ägare.
Beroendeegenskapen fungerar fortfarande utan omslutningar från ett programmatisk åtkomstperspektiv med hjälp av GetValue eller SetValue. Men du vill vanligtvis likställa egenskapssystemets beteende med CLR-egenskapsomslag. Omslutningarna gör det enklare att ange beroendeegenskapen programmatiskt och göra det möjligt att ange egenskaperna som XAML-attribut.
Information om hur du åsidosätter standardmetadata finns i åsidosätt metadata för en beroendeegenskap.
Exempel
public class MyStateControl : ButtonBase
{
public MyStateControl() : base() { }
public Boolean State
{
get { return (Boolean)this.GetValue(StateProperty); }
set { this.SetValue(StateProperty, value); }
}
public static readonly DependencyProperty StateProperty = DependencyProperty.Register(
"State", typeof(Boolean), typeof(MyStateControl),new PropertyMetadata(false));
}
Public Class MyStateControl
Inherits ButtonBase
Public Sub New()
MyBase.New()
End Sub
Public Property State() As Boolean
Get
Return CType(Me.GetValue(StateProperty), Boolean)
End Get
Set(ByVal value As Boolean)
Me.SetValue(StateProperty, value)
End Set
End Property
Public Shared ReadOnly StateProperty As DependencyProperty = DependencyProperty.Register("State", GetType(Boolean), GetType(MyStateControl),New PropertyMetadata(False))
End Class
public class UnrelatedStateControl : Control
{
public UnrelatedStateControl() { }
public static readonly DependencyProperty StateProperty = MyStateControl.StateProperty.AddOwner(typeof(UnrelatedStateControl), new PropertyMetadata(true));
public Boolean State
{
get { return (Boolean)this.GetValue(StateProperty); }
set { this.SetValue(StateProperty, value); }
}
}
Public Class UnrelatedStateControl
Inherits Control
Public Sub New()
End Sub
Public Shared ReadOnly StateProperty As DependencyProperty = MyStateControl.StateProperty.AddOwner(GetType(UnrelatedStateControl), New PropertyMetadata(True))
Public Property State() As Boolean
Get
Return CType(Me.GetValue(StateProperty), Boolean)
End Get
Set(ByVal value As Boolean)
Me.SetValue(StateProperty, value)
End Set
End Property
End Class
Se även
- Anpassade egenskaper för beroenden
- Översikt över beroende-egenskaper
.NET Desktop feedback