次の方法で共有


Application.Resources プロパティ

定義

スタイル、テンプレート、ブラシなど、アプリケーション スコープのリソースのコレクションを取得します。

ResourceDictionary Resources();

void Resources(ResourceDictionary value);
public ResourceDictionary Resources { get; set; }
var resourceDictionary = application.resources;
application.resources = resourceDictionary;
Public Property Resources As ResourceDictionary
<Application>
  <Application.Resources>
    oneOrMoreResourceElements
  </Application.Resources>
</Application>
 

プロパティ値

0 個以上のアプリケーション スコープリソースを含む ResourceDictionary オブジェクト。

この例では、アプリ固有のリソースを宣言する方法を示します (これにより、テンプレートの開始から取得される共通のコンバーター クラス インスタンスが作成されます)。 次に、内に ResourceDictionary 要素を含む Application.MergedDictionaries プロパティ要素を追加し、それぞれが URI によって XAML ファイルを Source として参照します

<Application.Resources>
    <ResourceDictionary>
      <common:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/> 
      <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="rd1.xaml" />
        <ResourceDictionary Source="rd2.xaml" />
      </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
  </Application.Resources>

注釈

Windows ランタイムのリソース ディクショナリ モデルでは、Windows Presentation Foundation (WPF) または Microsoft Silverlight を使用してアプリケーションを作成した場合に理解できる XAML リソースの概念の多くがサポートされています。 詳しくは、「ResourceDictionary と XAML リソースの参照」をご覧ください。

プロパティ要素を埋める ResourceDictionary で定義した Application.Resources リソースは、アプリの任意のページから取得できます。 これは、アプリのページの多くがすべて同じリソースを使用している場合に便利です。 たとえば、アプリの UI の配色に使用している SolidColorBrush リソースがあり、その色がほとんどのページで使用されている場合、 SolidColorBrush が に Application.Resources 使用 Application.Resourcesされていることを宣言するのが理にかなっています。

にリソースを追加する場合は Application.Resources、既存 ResourceDictionary.MergedResourcesの の の前または後に追加します。 XAML のルールでは、プロパティ要素タグの両側にコンテンツを配置することはできません。 詳細については、「 XAML 構文ガイド」を参照してください。

以前のバージョンの注意事項

Windows 8.1でのリソース読み込みの最適化

Windows 8.1以降、アプリ モデルとWindows ランタイム XAML パーサーによって有効になるリソース読み込みの最適化があります。 Windows 8の場合、XAML パーサーは app.xaml からリソースを読み込み、それぞれのリソースをスタートアップの一部としてオブジェクトとして作成しました。 大きな辞書がある場合、それはあまり効率的ではありませんでした。 また、これらのリソースには、3 つのテーマすべてに必要な項目が含まれており、3 つのテーマのうち 2 つもアクティブになりません。 Windows 8.1以降、XAML パーサーは、リソースが特に要求されたときにのみリソースを作成します。 要求は、他のリソース、またはアプリまたはページ XAML から読み込まれる場合があります。 このパーサーの動作により、起動時にアプリ レベルのディクショナリを読み取るまでの時間が最小限に抑えられます。また、ほとんどの場合、最初のアプリ ページの読み込みが高速になります。 現在アクティブでない他のテーマに必要なリソースは、そのテーマがユーザーによってアクティブなテーマになるように選択されている場合にのみ読み込まれます。 その時点で、 {ThemeResource} マークアップ拡張機能 が要求に使用されたリソースは、新しくアクティブなテーマに基づいて再計算されます。

Windows 8 の動作

Windows 8上記の最適化がありませんでした。 の ResourceDictionaryApplication.Resources は、スプラッシュスクリーン以外のページがアプリのウィンドウに読み込まれる前に解析を完了する必要がありました。 このため、アプリをWindows 8.1に再ターゲットするタイミングに違いが生じます。 アプリの読み込みは速くなりますが、再ターゲットの一環としてアプリ コードに加えた他の変更と比較して、この改善を分離できない場合があります。 最適化されたリソースの読み込みによってタイミングの変化の証拠が表示される場所には、コンストラクターがパーサーによって呼び出されたとき、 Application オブジェクト、コンバーター、またはその他のカスタム クラスなどのオブジェクトが含まれます。 Windows 8 用にコンパイルしたアプリは、Windows 8.1 上で実行しても Windows 8 のときと同じ動作になります。

パフォーマンスと XAML リソースファクターの詳細については、「 XAML マークアップを最適化する」を参照してください。

適用対象

こちらもご覧ください