for WPF developers
添付プロパティとは、既存のコントロールに後付けで新たに添付することができるプロパティのことです。 例えば Grid コントロールは Grid.Row 添付プロパティなどを使って子要素の配置をおこなっていますが、 Grid.Row 添付プロパティは Grid コントロールにのみ設定するプロパティではなく、 Button コントロールや TextBlock コントロールなどその他の既存のコントロールに添付できます。 これと同じものが自分でも作成できます。
ページ内リンク
添付プロパティを作成するためにはそのプロパティを持つクラスが必要ですが、
一般的にはその目的に関する名前を付けます。
ここではサンプルとして作成するので、SampleAttachedProperties という名前のクラスにします。
そして、このクラスに IsFirst 添付プロパティを追加します。
namespace CustomAttachedProperty
{
using System.Windows;
public class SampleAttachedProperties
{
public static readonly DependencyProperty IsFirstProperty = DependencyProperty.RegisterAttached("IsFirst", typeof(bool), typeof(SampleAttachedProperties), new FrameworkPropertyMetadata(false));
public static bool GetIsFirst(DependencyObject target)
{
return (bool)target.GetValue(IsFirstProperty);
}
public static void SetIsFirst(DependencyObject target, bool value)
{
target.SetValue(IsFirstProperty, value);
}
}
}
上記で作成した添付プロパティを XAML 上で設定するときは次のようにします。 作成したクラスが属する名前空間のエイリアスを定義することを忘れないようにして下さい。 後はクラス名の後に "." を付けるとそのクラスで定義されている添付プロパティが指定できます。 これは Grid.Row 添付プロパティなんかと同じ書き方ですね。
コードから設定された添付プロパティの値を取得するには次のようにします。
一般的に添付プロパティはこれだけで使用することはありません。 というのも、Code 3 を見るとわかるように、これは View のコードビハインドに記述しています。 添付プロパティは添付ビヘイビアで利用することでその効果を発揮します。
Designed by CSS.Design Sample