C#のWPFでコントロールを自作する その1

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プロパティに値がバインド出来るようになる。

 

 

 

 

つづく