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 を含む単純な Resources ディクショナリの 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 プロパティの参照はインラインであり、その直後に、文字列キー を持つ ResourceDictionary 項目を取得するインデクサーの使用法が続きます RainbowBrush。 明示的なキャストに注意してください。 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"];
}
Private Sub SetBGByResource(sender As Object, e As RoutedEventArgs)
    Dim b As Button = TryCast(sender, Button)
    b.Background = DirectCast(Me.Resources("RainbowBrush"), Brush)
End Sub
<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 はキー付きコレクションであり、Visual C++ コンポーネント拡張機能 (C++/CX) を使用してプログラミングする場合は IMap<K,V> テンプレート、C# または Microsoft Visual Basic でプログラミングする場合は IDictionary<TKey,TValue> テンプレートに基づいています。 ディクショナリとその項目を操作するためにコードで使用する API は、基になるテンプレートと、アプリに使用している言語を反映しています。

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

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

適用対象

こちらもご覧ください