Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento příklad ukazuje, jak přidat třídu jako vlastníka vlastnosti závislosti zaregistrované pro jiný typ. Tímto způsobem dokáže čtečka WPF XAML a systém vlastností rozpoznat třídu jako dalšího vlastníka vlastnosti. Přidání jako vlastníka volitelně umožňuje, aby přidávající třída poskytla metadata specifická pro typ.
V následujícím příkladu je StateProperty vlastnost registrovaná třídou MyStateControl. Třída UnrelatedStateControl se přidá jako vlastník StateProperty pomocí metody AddOwner, a to konkrétně pomocí podpisu, který umožňuje definovat nová metadata pro vlastnost závislosti tak, jak existují na typu, ke kterému se přidávají. Všimněte si, že byste pro vlastnost měli poskytnout přístupové objekty CLR (Common Language Runtime) podobně jako v příkladu Implementovat vlastnost závislosti a také znovu zveřejnit identifikátor vlastnosti závislosti ve třídě, která je přidávána jako vlastník.
Bez obálky by vlastnost závislosti stále fungovala z hlediska programového přístupu pomocí GetValue nebo SetValue. Obvykle ale chcete paralelně provádět toto chování systému vlastností pomocí obálky vlastností CLR. Obálky usnadňují programové nastavení vlastnosti závislosti a umožňují nastavit vlastnosti jako atributy XAML.
Informace o přepsání výchozích metadat najdete v tématu Přepsání metadat pro vlastnost závislosti.
Příklad
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
Viz také
- Vlastní vlastnosti závislosti
- Přehled vlastností závislosti
.NET Desktop feedback