Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In questo esempio viene illustrato come aggiungere una classe come proprietario di una proprietà di dipendenza registrata per un tipo diverso. In questo modo, il lettore XAML WPF e il sistema di proprietà sono entrambi in grado di riconoscere la classe come proprietario aggiuntivo della proprietà. L'aggiunta come proprietario consente facoltativamente alla classe di aggiunta di fornire metadati specifici del tipo.
Nell'esempio seguente StateProperty è una proprietà registrata dalla classe MyStateControl. La classe UnrelatedStateControl si aggiunge come proprietario del StateProperty usando il metodo AddOwner, in particolare usando la firma che consente nuovi metadati per la proprietà di dipendenza così come esiste nel tipo di aggiunta. Si noti che dovresti fornire funzioni di accesso CLR (Common Language Runtime) per la proprietà, come nell'esempio mostrato nell'esempio Implementare una proprietà di dipendenza, nonché ri-esporre l'identificatore della proprietà di dipendenza nella classe che viene aggiunta come proprietario.
Senza wrapper, la proprietà di dipendenza funzionerebbe ancora dal punto di vista dell'accesso a livello di codice usando GetValue o SetValue. Tuttavia, in genere si vuole parallelare questo comportamento del sistema di proprietà con i wrapper delle proprietà CLR. I wrapper semplificano l'impostazione della proprietà di dipendenza a livello di codice e consentono di impostare le proprietà come attributi XAML.
Per informazioni su come eseguire l'override dei metadati predefiniti, vedere Eseguire l'override dei metadati per una proprietà di dipendenza.
Esempio
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
Vedere anche
.NET Desktop feedback