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

FrameworkElement.Resources プロパティ

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

名前空間:  System.Windows
アセンブリ :  System.Windows (System.Windows.dll 内)

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 言語の XMAL 名前空間をマップする必要があります。 通常、これは x: プレフィックスとして表示されます。 マークアップで定義されたリソースにはそれぞれ一意のキー値が必要なため、これは必須です。 Key は XAML 言語/x: 名前空間で定義されます。また、Key は通常、Silverlight のリソース キーを指定する方法です (いくつかの特殊なシナリオを除く)。 XAML 言語の XAML 名前空間と x: プレフィックスとのマッピングは、Silverlight の 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」または「リソース ディクショナリ」を参照してください。

Silverlight

サポート対象 : 5、4、3

Silverlight for Windows Phone

サポート対象 : Windows Phone OS 7.1、Windows Phone OS 7.0

Silverlight でサポートされるオペレーティング システムの詳細については、「サポートされているオペレーティング システムとブラウザー」を参照してください。

コミュニティの追加

表示:
© 2014 Microsoft