リソースを作成して適用する方法
要素のスタイルとテンプレートは、"リソース" という再利用可能なエンティティに保存されます。スタイルを使用すると、要素のプロパティを設定し、それらの設定を再利用して、複数の要素で外観の一貫性を保つことができます。ControlTemplate は、コントロールの外観を定義し、リソースとしての適用も可能です。詳細については、「クイック スタート: コントロールのスタイル」および「クイック スタート: コントロール テンプレート」を参照してください。
既存のプロパティ、Style、または ControlTemplate から新しいリソースを作成するたびに、[リソースの作成] ダイアログ ボックスで、アプリケーション レベル、ドキュメント レベル、または要素レベルでリソースを定義できます。これらのレベルで、リソースをどこで使用できるかが特定されます。たとえば、要素レベルで定義したリソースは、そのリソースの作成時に使用した要素にのみ適用できます。リソースは、リソース ディクショナリに格納することもできます。リソース ディクショナリは、別のプロジェクトでも再度使用できる個別のファイルです。
新しいリソースを作成するには
XAML デザイナーで XAML ファイルを開いている状態で、要素を作成するか、[ドキュメント アウトライン] ウィンドウで要素を選択します。
[プロパティ] ウィンドウで、プロパティ値の右側にあるプロパティ マーカー (箱のシンボルとして表示されます) をクリックし、[新しいリソースに変換] をクリックします。白い箱のシンボルは既定値を示し、黒い箱のシンボルは、通常、ローカル リソースが適用されたことを示します。
リソースの作成に適したダイアログ ボックスが表示されます。次のダイアログ ボックスは、ブラシからリソースを作成すると表示されます。
[名前 (キー)] ボックスにキー名を入力します。これは、他の要素でリソースを参照する場合に使用できる名前です。
[定義先] の下で、リソースを定義する場所を指定するオプションをクリックします。
アプリケーション内の任意のドキュメントでリソースを使用できるようにする場合は、[アプリケーション] をクリックします。
リソースを現在のドキュメントでのみ使用できるようにする場合は、[このドキュメント] をクリックします。
リソースの作成元の要素またはその子要素のみでリソースを使用できるようにするには、[このドキュメント] をクリックし、ドロップダウン リストで "element: name" を選択します。
他のプロジェクトで再利用できるリソース ディクショナリ ファイルのリソースを定義するには、[リソース ディクショナリ] をクリックし、ドロップダウン リストで [StandardStyles.xaml] などの既存のリソース ディクショナリ ファイルをクリックします。
[OK] をクリックすると、リソースが作成され、作成元の要素に適用されます。
要素またはプロパティにリソースを適用するには
[ドキュメント アウトライン] ウィンドウで、リソースを適用する要素を選択します。
以下のいずれかを実行します。
プロパティにリソースを適用します。[プロパティ] ウィンドウで、プロパティ値の横にあるプロパティ マーカーをクリックし、[ローカル リソース] または [システム リソース] をポイントしてから、表示される一覧で、使用可能なリソースをクリックします。
表示されるはずのリソースが表示されない場合は、リソースの種類がプロパティの型と一致しないためであると考えられます。
スタイル テンプレートまたはコントロール テンプレートのリソースをコントロールに適用します。[ドキュメント アウトライン] ウィンドウでコントロールを右クリックし、[テンプレートの編集] または [追加テンプレートの編集] をポイントして、[リソースの適用] をポイントしてから、表示される一覧からコントロール テンプレート名をクリックします。
注意
[テンプレートの編集] は、コントロール テンプレートを適用するために使用されます。[追加テンプレートの編集] は、その他の種類のテンプレートを適用するために使用されます。
リソースは、互換性のある任意の場所に適用できます。たとえば、ブラシ リソースは、TextBox コントロールの [前景] プロパティに適用できます。
リソースを編集するには
アートボードまたは [ドキュメント アウトライン] ウィンドウで要素を選択します。
[プロパティ] ウィンドウのプロパティの右側にある既定またはローカルのプロパティ マーカーをクリックし、[リソースの編集] をクリックして [リソースの編集] ダイアログ ボックスを開きます。
リソースのオプションを変更します。