Como implementar uma propriedade de dependência (WPF .NET)
Este artigo descreve como implementar uma propriedade de dependência usando um DependencyProperty campo para dar suporte a uma propriedade CLR (Common Language Runtime). As propriedades de dependência dão suporte a vários recursos avançados do sistema de propriedades do Windows Presentation Foundation (WPF). Esses recursos incluem estilos, vinculação de dados, herança, animação e valores padrão. Se você quiser que as propriedades definidas ofereçam suporte a esses recursos, implemente suas propriedades como uma propriedade de dependência.
Exemplo
O exemplo a seguir mostra como registrar uma propriedade de dependência, chamando o Register método. O Register
método retorna uma DependencyProperty instância chamada identificador de propriedade de dependência. O identificador é armazenado em um static readonly
campo e contém o nome e as características de uma propriedade de dependência.
O campo identificador deve seguir a convenção <property name>Property
de nomenclatura. Por exemplo, se você registrar uma propriedade de dependência com o nome Location
, o campo identificador deverá ser nomeado LocationProperty
. Se você não seguir esse padrão de nomenclatura, os designers do WPF poderão não relatar sua propriedade corretamente e os aspectos do aplicativo de estilo do sistema de propriedades poderão não se comportar conforme o esperado.
No exemplo a seguir, o nome da propriedade de dependência e seu acessador CLR é HasFish
, portanto, o campo identificador é denominado HasFishProperty
. O tipo de propriedade de dependência é Boolean e o tipo de proprietário que registra a propriedade de dependência é Aquarium
.
Você pode especificar metadados padrão para uma propriedade de dependência. Este exemplo define um valor padrão de false
para a HasFish
propriedade de dependência.
public class Aquarium : DependencyObject
{
public static readonly DependencyProperty HasFishProperty =
DependencyProperty.Register(
name: "HasFish",
propertyType: typeof(bool),
ownerType: typeof(Aquarium),
typeMetadata: new FrameworkPropertyMetadata(defaultValue: false));
public bool HasFish
{
get => (bool)GetValue(HasFishProperty);
set => SetValue(HasFishProperty, value);
}
}
Public Class Aquarium
Inherits DependencyObject
Public Shared ReadOnly HasFishProperty As DependencyProperty =
DependencyProperty.Register(
name:="HasFish",
propertyType:=GetType(Boolean),
ownerType:=GetType(Aquarium),
typeMetadata:=New FrameworkPropertyMetadata(defaultValue:=False))
Public Property HasFish As Boolean
Get
Return GetValue(HasFishProperty)
End Get
Set(value As Boolean)
SetValue(HasFishProperty, value)
End Set
End Property
End Class
Para obter mais informações sobre como e por que implementar uma propriedade de dependência, em vez de apenas dar suporte a uma propriedade CLR com um campo privado, consulte Visão geral das propriedades de dependência.
Confira também
.NET Desktop feedback