情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

FrameworkElement.Resources プロパティ

2013/12/12

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

Namespace:  System.Windows
アセンブリ:  System.Windows (System.Windows.dll 内)
XAML の XMLNS: xmlns にマップされていません。

public ResourceDictionary Resources { get; set; }
<frameworkElement>
  <frameworkElement.Resources>
    oneOrMoreResourceElements
  </frameworkElement.Resources>
</frameworkElement>

XAML 値

oneOrMoreResourceElements

それぞれがリソースを作成および定義する 1 つ以上のオブジェクト要素。ResourceDictionary 内のリソース プロパティ要素ごとに、一意のキー (通常は x:Key) を属性として指定する必要があります。そのキーは、ResourceDictionary から値を取得するときに使用されます。

プロパティ値

型: System.Windows.ResourceDictionary
ローカルで定義された現在のリソース ディクショナリ。各リソースはキーでアクセスできます。

リソース ディクショナリは、XAML で完全に定義することも、または部分的に定義することもできます。通常は、アプリケーションの個々のページのルートまたは、Application 自体 (カスタマイズした Application を使用している場合は、これが派生クラスであることもあります) のルートで Resources プロパティの XAML プロパティ要素によって作成されます。XAML のルート レベルにリソース ディクショナリを配置すると、XAML ページで定義されているオブジェクト ツリー内の個々の子オブジェクトからスコープ内のリソースへの参照の予測が容易になります。

Resources の値を取得した後、ResourceDictionary API を呼び出すことで、XAML で定義されたリソース ディクショナリから作成されたリソースをコードで参照することもできます。ただし、XAML で作成したリソースには、ディクショナリが宣言されているオブジェクトで Loaded が発生するまではアクセスできないので注意してください。また、適用したテンプレートでは、ディクショナリ検索の動作が異なることにも注意してください。

プロパティの値の基になる ResourceDictionary 型は、コードを使用したディクショナリ内のリソースの追加、削除、または照会に必要なメンバーをサポートします。

ここに示されている XAML 構文には、ResourceDictionary クラスのオブジェクト要素が含まれていません。これは、XAML の暗黙的なコレクション構文の一例で、コレクション要素を表すタグは省略可能です。コレクションに項目として追加される要素は、基になる型がコレクションの Add メソッドをサポートしているプロパティのプロパティ要素の子要素として指定されます。

XAML で ResourceDictionary オブジェクト要素を明示的に宣言する必要のあるケースの 1 つは、オブジェクトで、マージしたリソース ディクショナリをサポートする場合です。これは、通常は XAML のルートでのみ行われます。

XAML マークアップからリソースを使用する場合、xmlns 宣言を使用して、XAML 言語の XAML 名前空間をマップする必要があります。通常、これは x: プレフィックスとして表示されます。これは、マークアップで定義されるリソースにそれぞれ固有の Key 値が必要だからです。Key は XAML 言語 / x: 名前空間で定義します。一部の特殊なケースを除き、通常は Key を使用して、Windows Phone のリソース キーを指定します。XAML 言語の XAML 名前空間と x: プレフィックスとのマッピングは、Windows Phone の XAML のルート要素を作成するほとんど (すべてではありませんが) のツールによって既に実行されています。

次の XAML は、項目を 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>


次の例は、Resources プロパティへの標準的なコード アクセスの方法を示しています。この例では、Resources プロパティの参照がインラインで指定され、その直後に、文字列キー RainbowBrush を使って ResourceDictionary 項目を取得するインデクサーが指定されています。明示的なキャストに注意してください。ResourceDictionary から返される項目の戻り値は常にジェネリック オブジェクトです。


void SetBGByResource(object sender, RoutedEventArgs e)
{
  Button b = sender as Button;
  b.Background = (Brush)this.Resources["RainbowBrush"];
}


ResourceDictionary を使用する他のコード例については、「ResourceDictionary」を参照してください。

Windows Phone OS

サポート: 8.0, 7.1, 7.0

表示: