.png)
チェック ボックスは、オン、オフ、不定という 3 つの状態を取り得るトグルとして機能するコンテンツ コントロールです。IsChecked 状態は、チェック ボックスがオンかどうかを示します。Microsoft Expression Blend でチェック ボックスにコンテンツを配置するには、チェック ボックスをダブルクリックし、その中に要素を描画します。チェック ボックスに複数の要素を配置する場合は、[Grid] または [Canvas] などのレイアウト パネルを最初に追加する必要があります。チェック ボックスには、既定でテキストを表示することもできます。既定のテキストを編集するには、チェック ボックスを右クリックして、[テキストの編集] をクリックします。
アートボード ビュー : [SimpleCheckBox] コントロール
.png)
コントロール テンプレートの構成要素
SimpleCheckBox コントロール テンプレートは、次の要素から構成されています。
BulletDecorator コンテナー : チェック ボックスをテキストと整列するために使用されます。[BulletDecorator] には、[Bullet] 要素とコンテンツ要素 ([ContentPresenter] など) の 2 つの子要素があります。[BulletDecorator] は、テキストを他の要素と整列する必要がある他のコントロール群 ([RadioButton] など) でも使用されます。
Bullet 要素 : CheckMark という [Path] 要素と [Border] 要素を子要素として含むグリッド パネルが含まれています。[Path] 要素は、チェック マークを描画するために使用されます。
ContentPresenter : このテンプレートが適用されるチェック ボックスの [Content] プロパティを表示するために使用されます。この要素はチェック ボックスのコンテンツを表示するために必要です。
オブジェクト ビュー : [SimpleCheckBox] コントロールの基本パーツ (テンプレート)
.png)
使用されるプロパティ トリガー
コントロール テンプレートのプロパティ トリガーは、プロパティの変更にコントロールを対応させるために使用されます。[トリガー] パネルのアイテムをクリックすると、トリガーがアクティブになると変更されるプロパティを表示できます。たとえば、SimpleCheckBox テンプレートでは、[IsChecked] プロパティが [False] になると、[CheckMark] パス要素の [Visibility] (表示状態) が [Collapsed] (折りたたみ) に変化します。他のトリガーでは、ブラシ リソースを使用して [Border] 要素の背景を変更します。
使用されるブラシ
SimpleCheckBox テンプレートでは、SimpleStyles.xaml リソース ディクショナリ内の次のブラシ リソースが使用されます。
[Border] 要素の [Background] プロパティは、アクティブなトリガーが存在しないときは [NormalBrush]、[IsMouseOver] が [True] のときは [MouseOverBrush]、[IsPressed] が [True] のときは [PressedBrush]、[IsEnabled] が [False] のときは [DisabledBackgroundBrush] を使用して設定されます。
[BorderBrush] プロパティは、アクティブなトリガーが存在しないときは [NormalBorderBrush]、[IsPressed] が [True] のときは [PressedBorderBrush]、[IsEnabled] が [False] のときは [DisabledBorderBrush] を使用して設定されます。
[Foreground] プロパティは、[IsEnabled] が [False] のときは [DisabledForegroundBrush] を使用して設定されます。
[CheckMark] 要素の [Stroke] プロパティは、[GlyphBrush] を使用してチェック マークを描画します。
ベスト プラクティスおよびデザイン ガイドライン
一般に、アプリケーションのユーザー インターフェイス (UI) のデザイン時にコントロールに視覚要素を追加することが想定される場合は、テンプレートのルートとして [Grid] コントロールを使用します。Expression Blend は、既定では [Grid] コントロールなどのレイアウト パネルを検索してアクティブにします。これにより、アートボードに追加される新しい要素がレイアウト パネルの子要素になります。
チェック ボックスのコンテンツは、[ContentPresenter] 要素によって表示されます。[ContentPresenter] 要素は、テンプレートが適用されるコントロールの [Content] プロパティに、そのテンプレートを自動的にバインドします。この要素は、テンプレートがバインドされた親のコンテンツをチェック ボックスに表示するために必要です。
使用するコントロールに、コントロール テンプレートをバインドするための属性が不足していることがあります。たとえば、[CheckBox] コントロールには、[CheckMark] 要素に対してブラシを設定するための属性がありません。この場合は、[CheckMark] のストロークにブラシを設定して、このブラシを簡単に変更できます。[CheckBox] コントロールに基づいてカスタム クラスを作成し、バインド先として適した属性を追加するか、または既存の属性にバインドすることができます。カスタム クラスの例については、「試してみよう : カスタム プロパティを持つカスタム コントロールの作成」を参照してください。
[CheckMark] パス要素の表示と非表示が切り替えられるため、[Grid] 要素のサイズは固定されています。[Grid] 要素のサイズが固定されていないと、チェック ボックスの選択状態が変わるたびに [ContentPresenter] 内のテキストが移動してしまいます。グリッドのサイズを固定して [CheckMark] パスを非表示にする代わりに、[CheckMark] パス オブジェクトの [Stroke] プロパティの [Opacity] を 0 に変更する方法もあります。