如何:注册附加属性

此示例演示如何注册附加属性和提供公共访问器,以便可以在 XAML 和代码中使用该属性。 附加属性是由 XAML 定义的语法概念。 WPF 类型的大多数附加属性还作为依赖属性实现。 可以在任何 DependencyObject 类型上使用依赖属性。

示例

以下示例显示如何使用 RegisterAttached 方法将附加属性注册为依赖属性。 在其他类上使用属性时,提供程序类可以选择为适用的属性提供默认元数据,除非该类会重写元数据。 在此示例中,IsBubbleSource 属性的默认值设置为 false

附加属性(即使未注册为依赖属性)的提供程序类必须提供遵循 Set[附加属性名称]Get[附加属性名称] 命名约定的静态 get 和 set 访问器。 需要这些访问器目的是生效的 XAML 读取器可以在 XAML 中将属性识别为特性,并解析相应的类型。

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

另请参阅