WPFでコントロールを自作する場合、メニューから[ユーザーコントロールの追加]を実行する事で、UserControlクラスを継承した新たなコントロールを作成出来る。
作成したコントロールはXAMLから配置する事が出来るが、自作コントロールのプロパティへ値をバインドさせたい場合、依存関係プロパティという仕組みを使う必要がある。
依存関係プロパティにはDependencyPropertyクラスを使う。
手順は以下の通り。
手順の例では「SelectedColor」というColor型のプロパティを作成している。
DependencyPropertyを作成
DependencyProperty.Registerメソッドを使ってプロパティを作成する。
プロパティ名、プロパティの型、プロパティを所有するクラスの型に加えて、PropertyMetadataから初期値やプロパティ変更時のコールバックメソッドを指定できる。
public static readonly DependencyProperty SelectedColorProperty =
DependencyProperty.Register(
"SelectedColor", // プロパティ名を指定
typeof(Color), // プロパティの型を指定
typeof(ColorPicker), // プロパティを所有する型を指定
new PropertyMetadata(Colors.White, (d, e) => {(d as ColorPicker).OnColorPropertyChanged(e); }));
通常のプロパティも作成
依存関係プロパティをラップするような感じ。
public Color SelectedColor
{
get { return (Color)GetValue(SelectedColorProperty); }
set { SetValue(SelectedColorProperty, value); }
}
これでSelectedColorプロパティに値がバインド出来るようになる。

コメント
コメントを投稿