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

 

 

 

 

つづく

 

 

コメントをお書きください

コメント: 7
  • #1

    QlqzzNwr (土曜日, 07 8月 2021 04:08)

    1

  • #2

    QlqzzNwr (土曜日, 07 8月 2021 04:08)

    1

  • #3

    QlqzzNwr (土曜日, 07 8月 2021 04:09)

    1

  • #4

    QlqzzNwr (土曜日, 07 8月 2021 04:09)

    1

  • #5

    chqqClNn')) OR 887=(SELECT 887 FROM PG_SLEEP(15))-- (土曜日, 07 8月 2021 04:09)

    1

  • #6

    QlqzzNwr (土曜日, 07 8月 2021 04:10)

    1

  • #7

    QlqzzNwr (土曜日, 07 8月 2021 10:37)

    1