FrameworkElement.Resources プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
ローカルに定義されたリソース ディクショナリを取得します。 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"];
}
<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# でプログラミングする場合は IDictionary<TKey,TValue> テンプレートに基づいています。 ディクショナリとその項目を操作するためにコードで使用する API は、基になるテンプレートと、アプリに使用している言語を反映しています。
アプリケーション には Resources プロパティもあります。これは、アプリ内の複数のページからアクセスできるリソースを格納するために使用できます。 カスタム コントロールのリソースは、テンプレート 化されたコントロールの既定のプロジェクト テンプレートによって作成される別の XAML ファイルに格納することもできます。
XAML リソース コレクションに表示される項目は、実行時に使用可能な XAML 定義リソースの全体であるとは限りません。 実行時には、 MergedDictionaries プロパティが ResourceDictionary に与える影響により、他のリソースを使用できます。 この値は、既定の MergedDictionaries
XAML コントロール テンプレートのリソースなど、システムによって定義されたリソースなどの他のディクショナリを導入できます。 ランタイム テーマ固有のリソースは、同様の ThemeDictionaries プロパティからも使用できます。 実行時に Resources コレクションにアクセスし、インデクサーまたは Lookup メソッドを使用して特定のキーのクエリをItem
実行すると、これらのリソースにアクセスして取得できます。 詳しくは、「ResourceDictionary と XAML リソースの参照」をご覧ください。 また、 Application.Resources は、アプリ内の任意の XAML 参照に使用できるリソースを提供できるため、特定の FrameworkElement.Resources ディクショナリ内のリソースを拡張できます。