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"];
}
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 ディクショナリ内のリソースを拡張することもできます。