Практическое руководство. Регистрация присоединенного свойстваHow to: Register an Attached Property

В этом примере демонстрируется регистрация присоединенного свойства и предоставление открытых методов доступа для использования свойства в Язык XAMLExtensible Application Markup Language (XAML) и в коде.This example shows how to register an attached property and provide public accessors so that you can use the property in both Язык XAMLExtensible Application Markup Language (XAML) and code. Присоединенные свойства являются понятием синтаксиса, определенным в Язык XAMLExtensible Application Markup Language (XAML).Attached properties are a syntax concept defined by Язык XAMLExtensible Application Markup Language (XAML). Большинство присоединенных свойств для типов WPFWPF также реализовано как свойства зависимостей.Most attached properties for WPFWPF types are also implemented as dependency properties. Свойства зависимостей можно использовать на любом DependencyObject типов.You can use dependency properties on any DependencyObject types.

ПримерExample

В следующем примере показано, как зарегистрировать присоединенное свойство как свойство зависимостей, с помощью RegisterAttached метод.The following example shows how to register an attached property as a dependency property, by using the RegisterAttached method. Класс поставщика имеет возможность предоставления метаданных по умолчанию для свойства, применяемых в случае, когда свойство используется в другом классе и этот класс не переопределяет метаданные.The provider class has the option of providing default metadata for the property that is applicable when the property is used on another class, unless that class overrides the metadata. В этом примере значение по умолчанию свойства IsBubbleSource равно false.In this example, the default value of the IsBubbleSource property is set to false.

Класс поставщика для присоединенного свойства (даже если оно не зарегистрировано как свойство зависимостей) должен предоставлять статические методы доступа get и set, соответствующие правилам именования Set[имя_присоединенного_свойства] и Get[имя_присоединенного_свойства].The provider class for an attached property (even if it is not registered as a dependency property) must provide static get and set accessors that follow the naming convention Set[AttachedPropertyName] and Get[AttachedPropertyName]. Эти методы доступа требуются для того, чтобы действующее средство чтения XAMLXAML распознало свойство как атрибут в разметке XAMLXAML и разрешило соответствующие типы.These accessors are required so that the acting XAMLXAML reader can recognize the property as an attribute in XAMLXAML and resolve the appropriate types.

public static readonly DependencyProperty IsBubbleSourceProperty = DependencyProperty.RegisterAttached(
  "IsBubbleSource",
  typeof(Boolean),
  typeof(AquariumObject),
  new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender)
);
public static void SetIsBubbleSource(UIElement element, Boolean value)
{
  element.SetValue(IsBubbleSourceProperty, value);
}
public static Boolean GetIsBubbleSource(UIElement element)
{
  return (Boolean)element.GetValue(IsBubbleSourceProperty);
}
Public Shared ReadOnly IsBubbleSourceProperty As DependencyProperty = DependencyProperty.RegisterAttached("IsBubbleSource", GetType(Boolean), GetType(AquariumObject), New FrameworkPropertyMetadata(False, FrameworkPropertyMetadataOptions.AffectsRender))
Public Shared Sub SetIsBubbleSource(ByVal element As UIElement, ByVal value As Boolean)
    element.SetValue(IsBubbleSourceProperty, value)
End Sub
Public Shared Function GetIsBubbleSource(ByVal element As UIElement) As Boolean
    Return CType(element.GetValue(IsBubbleSourceProperty), Boolean)
End Function

См. такжеSee also