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

WPFのユーザーコントロールやテンプレートの仕組みを使って色を選択するコントロールを作成してみる 

 

こんな感じのやつ。その名もColorPicker。

ComboBoxをベースにしている。

コントロールをクリックすると、カラーパレットが表示されそこから色を選択出来るというもの。

もっと細かく色を作りたい時は「その他の色...」というところからColorDialogを表示させる仕組み。

 

 

SelectedColorというColor型のプロパティを作って、データソースへバインド出来るようにする。

 「WPFでコントロールを自作する」や

 「WPFでコントロールを自作する その2」を参照

 

ドロップダウンで表示されるComboBoxItemはItemTemplateを使ってBorderコントロールで表示。

 「WPFでComboBoxの表示をカスタマイズ」を参照

 

ItemsPanelTemplateを使ってGridを配置し、ComboBoxItemを縦横に並べている。

 「WPFでComboBoxの表示をカスタマイズ その2」を参照

 

カラーパレットは大まかに3段に分かれていて、グレースケール、基本色、グラデーションとしている。

段落間に開いたスペースはComboBoxのグループヘッダーの仕組みを使っている。

 「WPFのComboBoxでグループ毎に表示させる」を参照

 

「その他の色...」の部分のグループヘッダーを使っていて、HeaderTemplateSelectorによって使用するHeaderTemplateを切り替えている。

 「WPFで複数のテンプレートを切り替えて使う」を参照

 

 

つづく