方法: 添付プロパティを登録する

この例では、添付プロパティを登録し、パブリック アクセサーを提供して、XAML とコードの両方でそのプロパティを使用できるようにする方法を示します。 添付プロパティは、XAML で定義されている構文の概念です。 WPF の型のほとんどの添付プロパティは、依存関係プロパティとしても実装されます。 あらゆる DependencyObject 型で依存関係プロパティを使用できます。

次の例では、RegisterAttached メソッドを使用して添付プロパティを依存関係プロパティとして登録する方法を示します。 プロバイダー クラスは、プロパティの既定のメタデータを提供するオプションを持っています。この既定値は、別のクラスに対してプロパティが使用されるときに適用されます (そのクラスがメタデータをオーバーライドしない場合)。 この例では、IsBubbleSource プロパティの既定値は false に設定されています。

添付プロパティ (依存関係プロパティとして登録されていなくても) のプロバイダー クラスは、Set[AttachedPropertyName] および Get[AttachedPropertyName] の名前付け規則に従う静的な 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

関連項目