Share via


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 Propertyliteral . Por exemplo, se você registrar uma propriedade de dependência com um Name de , o campo identificador definido para a propriedade de Locationdependê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 é StateBooleanStatePropertyMyStateControl.

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