Как зарегистрировать присоединенное свойство (WPF .NET)
В этой статье описывается, как зарегистрировать присоединенное свойство и предоставить общедоступные методы доступа, которые позволяют получить доступ к присоединенному свойству с помощью языка разметки расширяемых приложений (XAML) и кода. Присоединенные свойства позволяют задавать дополнительные пары свойств и значений для любого элемента XAML, даже если элемент не определяет эти дополнительные свойства в объектной модели. Дополнительные свойства доступны глобально. Присоединенные свойства обычно определяются как специализированная форма свойства зависимостей, которая не имеет обычной оболочки свойств. Большинство присоединенных свойств для типов Windows Presentation Foundation (WPF) также реализуются как свойства зависимостей. Можно создать свойства зависимостей для любого производного типа DependencyObject.
Пример
В следующем примере показано, как зарегистрировать присоединенное свойство в качестве свойства зависимости с помощью метода RegisterAttached. Класс поставщика имеет параметр указания значения по умолчанию в метаданных свойств. Для получения дополнительных сведений о метаданных свойств зависимости см. в . В этом примере свойство HasFish
имеет тип значения Boolean, а значение по умолчанию — false
.
Класс поставщика для присоединенного свойства должен предоставлять статические методы доступа get/set, которые соответствуют правилам именования Get<property name>
и Set<property name>
. Средство чтения XAML использует специальные методы, чтобы распознать атрибут XAML для присоединенного свойства и преобразовать его значение в соответствующий тип. Эти аксессоры необходимы, даже если присоединенное свойство не зарегистрировано в качестве свойства зависимости.
public class Aquarium : UIElement
{
// Register an attached dependency property with the specified
// property name, property type, owner type, and property metadata.
public static readonly DependencyProperty HasFishProperty =
DependencyProperty.RegisterAttached(
"HasFish",
typeof(bool),
typeof(Aquarium),
new FrameworkPropertyMetadata(defaultValue: false,
flags: FrameworkPropertyMetadataOptions.AffectsRender)
);
// Declare a get accessor method.
public static bool GetHasFish(UIElement target) =>
(bool)target.GetValue(HasFishProperty);
// Declare a set accessor method.
public static void SetHasFish(UIElement target, bool value) =>
target.SetValue(HasFishProperty, value);
}
Public Class Aquarium
Inherits UIElement
' Register an attached dependency property with the specified
' property name, property type, owner type, and property metadata.
Public Shared ReadOnly HasFishProperty As DependencyProperty =
DependencyProperty.RegisterAttached("HasFish", GetType(Boolean), GetType(Aquarium),
New FrameworkPropertyMetadata(defaultValue:=False,
flags:=FrameworkPropertyMetadataOptions.AffectsRender))
' Declare a get accessor method.
Public Shared Function GetHasFish(target As UIElement) As Boolean
Return target.GetValue(HasFishProperty)
End Function
' Declare a set accessor method.
Public Shared Sub SetHasFish(target As UIElement, value As Boolean)
target.SetValue(HasFishProperty, value)
End Sub
End Class
См. также
- DependencyProperty
- Обзор присоединённых свойств
- Обзор свойств зависимостей
- свойства настраиваемых зависимостей
- Темы инструкций
.NET Desktop feedback