言語

FrameworkElement.Resources プロパティ

定義

ローカルで定義されたリソース ディクショナリを取得します。 XAML では、XAML の暗黙的なコレクション構文を使用して、 frameworkElement.Resources プロパティ要素の子オブジェクト要素としてリソース項目を確立できます。

ResourceDictionary Resources();

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

プロパティ値

リソースの現在のローカル定義ディクショナリ。各リソースは、そのキーによってアクセスできます。

この例では、1 つの項目 DataTemplate を含む単純なリソース ディクショナリの XAML 定義を示します。

<Grid.Resources>
  <DataTemplate x:Key="CBTemplate">
    <Grid>
      <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition />
      </Grid.ColumnDefinitions>
      <Image Grid.Column="0" Width="50" Height="50" 
        Source="{Binding Photo}" Stretch="Fill"/>
      <TextBlock Grid.Column="1" Text="{Binding Title}" 
        Margin="10" HorizontalAlignment="Left" FontSize="20"/>
    </Grid>
  </DataTemplate>
</Grid.Resources>
<GridView ItemTemplate="{StaticResource CBTemplate}" .../>

XAML リソース定義とリソース参照の使用は、Resources プロパティを使用する一般的な方法です。 ほとんどの場合、XAML だけで一般的なリソース シナリオを処理できます。 ただし、このプロパティを使用してコレクション API にアクセスし、シナリオで必要な場合はランタイム コードを使用してリソースを取得することもできます。 この例では、 Resources プロパティへのコード アクセスを示します。 この例では、Resources プロパティ参照はインラインであり、その直後に、文字列キーがRainbowBrushされた ResourceDictionary 項目を取得するインデクサーの使用法が続きます。 明示的なキャストに注意してください。 ResourceDictionary の項目の戻り値は、常に型指定されていないオブジェクトです。

void MainPage::SetBGByResource(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
{
  Button^ b = safe_cast<Windows::UI::Xaml::Controls::Button^>(sender);
  b->Background = safe_cast<Windows::UI::Xaml::Media::Brush^>(this->Resources->Lookup("RainbowBrush"));
}
void SetBGByResource(object sender, RoutedEventArgs e)
{
  Button b = sender as Button;
  b.Background = (Brush)this.Resources["RainbowBrush"];
}
<Page.Resources>
...
  <LinearGradientBrush x:Key="RainbowBrush">
    <GradientStop Color="Red" Offset="0.05" />
    <GradientStop Color="Orange" Offset="0.23" />
    <GradientStop Color="Yellow" Offset="0.41" />
    <GradientStop Color="Green" Offset="0.59" />
    <GradientStop Color="Blue" Offset="0.77" />
    <GradientStop Color="Purple" Offset="0.95" />
 </LinearGradientBrush>
</Page.Resources>

注釈

Resources コレクション内の項目の主な目的は、{StaticResource} マークアップ拡張参照 (または同様の {ThemeResource} マークアップ拡張参照) を使用して、XAML の他の部分から参照することです。 実行時に Resources コレクションにアクセスする場合は、関連するテンプレートの API を使用して、 ResourceDictionary 内の項目のクエリ、追加、または削除を行うことができます。

詳細と例については、「 ResourceDictionary と XAML リソースの参照」を参照してください

ResourceDictionary はキー付きコレクションであり、C++ でプログラミングしている場合は IMap<K,V> テンプレート、C# でプログラミングする場合は IDictionary<TKey、TValue> テンプレートに基づいています。 ディクショナリとその項目を操作するためにコードで使用する API は、基になるテンプレートと、アプリに使用している言語を反映しています。

アプリケーション には Resources プロパティもあります。これは、アプリ内の複数のページからアクセスできるリソースを格納するために使用できます。 カスタム コントロールのリソースは、テンプレート 化されたコントロールの既定のプロジェクト テンプレートによって作成される別の XAML ファイルに格納することもできます。

XAML リソース コレクションに表示される項目は、実行時に使用可能な XAML 定義リソースの全体であるとは限りません。 その他のリソースは、ResourceDictionary に対する MergedDictionaries プロパティの影響により、実行時に使用できます。 MergedDictionaries値は、既定の XAML コントロール テンプレートのリソースなど、システムによって定義されたリソースなどの他のディクショナリを導入できます。 ランタイム テーマ固有のリソースは、同様の ThemeDictionaries プロパティからも使用できます。 実行時に Resources コレクションにアクセスし、 Item インデクサーまたは Lookup メソッドを使用して特定のキーを照会する場合は、これらのリソースにアクセスして取得できます。 詳細については、「 ResourceDictionary および XAML リソース参照」を参照してください。 また、 Application.Resources は、アプリ内の任意の XAML 参照に使用できるリソースを提供できるため、特定の FrameworkElement.Resources ディクショナリ内のリソースを拡張できます。

適用対象

こちらもご覧ください