Como implementar uma propriedade de dependência
Este exemplo mostra como fazer backup de uma propriedade CLR (Common Language Runtime) com um DependencyProperty campo, definindo assim uma propriedade de dependência. Quando você define suas próprias propriedades e deseja que elas ofereçam suporte a muitos aspectos da funcionalidade do Windows Presentation Foundation (WPF), incluindo estilos, associação de dados, herança, animação e valores padrão, você deve implementá-las como uma propriedade de dependência.
Exemplo
O exemplo a seguir primeiro registra uma propriedade de dependência chamando o Register método. O nome do campo identificador que você usa para armazenar o nome e as características da propriedade dependency deve ser o Name escolhido para a propriedade dependency como parte da chamada, acrescentado pela cadeia de Register caracteres Property
literal . Por exemplo, se você registrar uma propriedade de dependência com um Name de , o campo identificador definido para a propriedade de Location
dependência deverá ser nomeado LocationProperty
.
Neste exemplo, o nome da propriedade dependency e seu acessador CLR é ; o campo identificador é ; o tipo da propriedade é ; e o tipo que registra a propriedade dependency é State
BooleanStateProperty
MyStateControl
.
Se você não conseguir seguir esse padrão de nomenclatura, os designers poderão não relatar sua propriedade corretamente e determinados aspectos do aplicativo de estilo do sistema de propriedade poderão não se comportar conforme o esperado.
Também é possível especificar metadados padrão para uma propriedade de dependência. Esse exemplo registra o valor padrão da propriedade de dependência State
como false
.
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
Para obter mais informações sobre como e por que implementar uma propriedade de dependência, em vez de apenas fazer backup de uma propriedade CLR com um campo privado, consulte Visão geral das propriedades de dependência.
Confira também
.NET Desktop feedback