オブジェクト プロパティをテンプレートに反映させる
テンプレートを使用すると、コントロールの独自の外観を設定できます。たとえば、同じテンプレートを使用する [RadioButton] コントロールは、すべて外観が同じになります。しかし、これらの [RadioButton] コントロールの色だけを変更したい場合があります。このような場合は、テンプレート バインドを使用すると、カスタム コントロールをデザインできると同時に、アプリケーションにコントロールを組み込むときに、必要な変更を加えることができます。
たとえば、Microsoft Expression Blend に付属している Zune3D サンプルでは、アプリケーションの下端にあるラジオ ボタンは形とハイライトが同じですが、色が違います。これは、テンプレートにあるオブジェクトの 1 つのオブジェクトの色を、そのテンプレートを使用する [RadioButton] コントロールの背景の色にバインドしているからです。
Zune3D サンプルの [RadioButton] オブジェクト
テンプレートによくバインドするプロパティは、次のとおりです。
プロパティ名 |
型 |
---|---|
Background |
Brush |
Fill |
Brush |
Stroke |
Brush |
BorderBrush |
Brush |
Foreground |
Brush |
BorderThickness |
Number |
Width |
Number |
Height |
Number |
[OpacityMask]、[Font]、[FontSize]、[LayoutTransform]、[RenderTransform] などのプロパティは、テンプレートにバインドする必要がありません。これらのプロパティは、テンプレート内の要素に自動的に反映されます。また、テンプレートに [ContentPresenter] オブジェクトがある場合は、[Content] プロパティと [Text] プロパティをテンプレートにバインドする必要がありません。
オブジェクトのプロパティをテンプレートで流用するには
コントロールのテンプレートを作成するか、既存のテンプレートを開きます。
詳細については、「システム コントロールのスタイル処理のための再利用可能なテンプレートの作成」を参照してください。
[オブジェクトとタイムライン] パネルで、テンプレートにバインドするプロパティを含むオブジェクトを選択します。
[プロパティ] パネルで、テンプレートにバインドするプロパティを見つけ、[詳細プロパティ オプション] をクリックし、[テンプレート バインド] をポイントしてから、テンプレートにバインドするプロパティをクリックします。
たとえば、Expression Blend の Zune3D サンプルでは、ボタンの内側の [Fill] プロパティは、テンプレートを使用する [RadioButton] コントロールの [Background] プロパティにバインドされています。
[プロパティ] パネルでは、テンプレートにバインドされているプロパティに黄色い枠が表示されます。
次に、このテンプレートを使用する別のオブジェクトを描画するときに、テンプレートにバインドしたプロパティ (前の例の Background プロパティ) を変更すると、テンプレート内の Fill プロパティに変更が反映されます。
テンプレート バインドを削除するには
コントロールのテンプレートを編集中に、[オブジェクトとタイムライン] パネルで、テンプレート バインドされたプロパティを含むオブジェクトを選択します。
[プロパティ] パネルで、テンプレートにバインドされたプロパティを見つけ、[詳細プロパティ オプション] 、[リセット] の順にクリックします。
プロパティを別の値に設定できるようになります。