Реализация свойства зависимостей (WPF .NET)
В этой статье описывается, как реализовать свойство зависимостей с помощью DependencyProperty поля для резервного копирования свойства среды CLR. Свойства зависимостей поддерживают несколько расширенных функций системы свойств Windows Presentation Foundation (WPF). Эти функции включают стили, привязку данных, наследование, анимацию и значения по умолчанию. Если вы хотите, чтобы свойства, которые вы определили для поддержки этих функций, реализуйте свойства в качестве свойства зависимостей.
Пример
В следующем примере показано, как зарегистрировать свойство зависимостей путем вызова Register метода. Метод Register
возвращает экземпляр, DependencyProperty называемый идентификатором свойства зависимостей. Идентификатор хранится в static readonly
поле и содержит имя и характеристики свойства зависимости.
Поле идентификатора должно соответствовать соглашению <property name>Property
об именовании. Например, если вы регистрируете свойство зависимостей с именем Location
, поле идентификатора должно быть названо LocationProperty
. Если вы не выполнили этот шаблон именования, конструкторы WPF могут неправильно сообщать о своем свойстве, а аспекты приложения системного стиля свойств могут не вести себя должным образом.
В следующем примере имя свойства зависимостей и его метод доступа CLR имеет значение HasFish
, поэтому поле идентификатора называется HasFishProperty
. Тип свойства зависимостей — Boolean это тип владельца, который регистрирует свойство Aquarium
зависимостей.
Можно указать метаданные по умолчанию для свойства зависимостей. В этом примере устанавливается значение false
по умолчанию для HasFish
свойства зависимостей.
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
Дополнительные сведения о том, как и почему реализовать свойство зависимостей, а не просто резервное копирование свойства СРЕДЫ CLR с частным полем, см . в обзоре свойств зависимостей.
См. также
.NET Desktop feedback