方法: 添付プロパティを登録するHow to: Register an Attached Property

この例では、添付プロパティを登録する方法、および Extensible Application Markup Language (XAML)Extensible 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 Extensible Application Markup Language (XAML)Extensible Application Markup Language (XAML) and code. 添付プロパティは、Extensible Application Markup Language (XAML)Extensible Application Markup Language (XAML) で定義されている構文の概念です。Attached properties are a syntax concept defined by Extensible Application Markup Language (XAML)Extensible 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.

添付プロパティ (依存関係プロパティとして登録されていなくても) のプロバイダー クラスは、Set[AttachedPropertyName] および Get[AttachedPropertyName] の名前付け規則に従う静的な get および set アクセサーを提供する必要があります。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