Como implementar uma propriedade de dependência (WPF .NET)
Este artigo descreve como implementar uma propriedade de dependência usando um DependencyProperty campo para apoiar uma propriedade CLR (Common Language Runtime). As propriedades de dependência oferecem suporte a vários recursos avançados do sistema de propriedades do Windows Presentation Foundation (WPF). Esses recursos incluem estilos, associaçã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.
Importante
A documentação do Guia da Área de Trabalho para .NET 7 e .NET 6 está em construção.
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 podem não relatar sua propriedade corretamente e os aspectos do aplicativo de estilo do sistema de propriedades podem não se comportar conforme o esperado.
No exemplo a seguir, o nome da propriedade dependency e seu acessador CLR é , portanto, o campo identificador é HasFish
nomeado HasFishProperty
. O tipo de propriedade de dependência é e o tipo de proprietário que registra a propriedade de dependência é BooleanAquarium
.
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 dependency.
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 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
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de