エクスポート (0) 印刷
すべて展開

FrameworkElement.Resources プロパティ

更新 : 2007 年 11 月

ローカルで定義されたリソース ディクショナリを取得または設定します。

名前空間 :  System.Windows
アセンブリ :  PresentationFramework (PresentationFramework.dll 内)
XAML の XMLNS : http://schemas.microsoft.com/winfx/xaml/presentation

public ResourceDictionary Resources { get; set; }
/** @property */
public ResourceDictionary get_Resources()
/** @property */
public  void set_Resources(ResourceDictionary value)

public function get Resources () : ResourceDictionary
public function set Resources (value : ResourceDictionary)
<object>
  <object.Resources>
    oneOrMoreResourceElements
  </object.Resources>
</object>
oneOrMoreResourceElements
                    それぞれがリソースを定義する 1 つ以上のオブジェクト要素。各 ResourceDictionary 内のリソース プロパティ要素は、x:Key 属性の値がそれぞれ一意であることが必要です。この値は、ResourceDictionary から値を取得するときに一意のキーとして機能します。
                

プロパティ値

型 : System.Windows.ResourceDictionary

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

リソース ディクショナリは、Extensible Application Markup Language (XAML)で完全に定義することも、または部分的に定義することもできます。通常は、個々のページまたはアプリケーションのルート要素でプロパティ要素として作成されます。このレベルにリソース ディクショナリを配置すると、ページ内の個々の子要素 (またはアプリケーション内の任意のページ) からの検索が容易になります。ほとんどのアプリケーション シナリオで、スタイルをリソース ディクショナリ内のオブジェクト要素として定義するか、スタイル リソース全体を内部格納できるように外部リソースとして定義することをお勧めします (外部リソースとして定義すると、編集する必要がある物理ファイルを分離することによってデザイナと開発者の責任を分割できます)。

このプロパティによって返されるのは、その要素内で直接宣言されているリソース ディクショナリだけです。上方への再帰的な検索によって、それぞれの親要素で定義されているリソースに子要素からアクセスできる実際のリソース ルックアップのプロセスとは異なります。

コレクション内のリソースをコードで参照することもできます。ただし、XAML で作成したリソースには、ディクショナリが宣言されている要素で Loaded が発生するまではアクセスできないので注意してください。実際、リソースは非同期に解析されるため、Loaded イベントが発生しても、XAML 定義のリソースを参照できる保証はありません。このため、一般に、XAML 定義のリソースにアクセスするには、ランタイム コードの一部としてアクセスするか、その他の XAML の手法 (スタイルや属性値のリソース拡張参照など) を使用してアクセスするようにしてください。コードでリソースにアクセスする場合、XAML から行う DynamicResource 参照と基本的に同じです。

基になる ResourceDictionary では、コードを使用してコレクション内のリソースを追加、削除、クエリするためのメソッドがサポートされています。Resources プロパティは、要素のリソース コレクションを新しい (または異なる) ResourceDictionary に完全に置き換えるシナリオをサポートするために、設定可能になっています。

ここに示されている XAML 構文には、ResourceDictionary の要素が含まれていません。これは、暗黙的なコレクション構文の一例で、コレクション要素を表すタグは省略可能です。代わりに、項目としてコレクションに追加する要素を指定します。暗黙的なコレクションと XAML の詳細については、「XAML 構文用語」を参照してください。ResourceDictionary を明示的に要素として指定する場合もあります。たとえば、マージされたディクショナリを導入する場合がこれに該当します。この場合、通常はその ResourceDictionary には子要素がありません。詳細については、「マージされたリソース ディクショナリ」を参照してください。

この例では、Extensible Application Markup Language (XAML) 内の属性を使用して、リソースを定義および参照する方法を示します。

SolidColorBrush リソースおよびいくつかの Style リソースの、2 つの種類のリソースを定義する例を次に示します。SolidColorBrush リソースの MyBrush を使用して、Brush 型の値を取得するいくつかのプロパティの値を提供します。Style リソースの PageBackgroundTitleTextLabel は、それぞれ特定のコントロール型をターゲットにします。スタイル リソースをリソース キーで参照し、そのスタイル リソースを使用して XAML で定義するいくつかの特定のコントロール要素の Style プロパティを設定するとき、スタイルは、対象のコントロールのさまざまなプロパティを設定します。

Label スタイルの setter 内のプロパティの 1 つは、先に定義した MyBrush リソースも参照していることに注意してください。これは一般的な手法ですが、リソースは、指定した順に解析されリソース ディクショナリに追加されます。StaticResource のマークアップ拡張機能を使用して別のリソース内から参照する場合、リソースは、ディクショナリ内で見つかった順序で要求されます。参照するリソースは、そのリソースが要求されるよりも先に、リソース コレクション内ですべて定義しておく必要があります。必要に応じて、代わりに DynamicResource のマークアップ拡張機能を使用してリソースを実行時に参照することで、このリソース参照の厳密な作成手順を回避できますが、この DynamicResource 手法はパフォーマンスを低下させることに注意してください。詳細については、「リソースの概要」を参照してください。

<Page Name="root"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Page.Resources>
    <SolidColorBrush x:Key="MyBrush" Color="Gold"/>
    <Style TargetType="Border" x:Key="PageBackground">
      <Setter Property="Background" Value="Blue"/>
    </Style>
    <Style TargetType="TextBlock" x:Key="TitleText">
      <Setter Property="Background" Value="Blue"/>
      <Setter Property="DockPanel.Dock" Value="Top"/>
      <Setter Property="FontSize" Value="18"/>
      <Setter Property="Foreground" Value="#4E87D4"/>
      <Setter Property="FontFamily" Value="Trebuchet MS"/>
      <Setter Property="Margin" Value="0,40,10,10"/>
    </Style>
    <Style TargetType="TextBlock" x:Key="Label">
      <Setter Property="DockPanel.Dock" Value="Right"/>
      <Setter Property="FontSize" Value="8"/>
      <Setter Property="Foreground" Value="{StaticResource MyBrush}"/>
      <Setter Property="FontFamily" Value="Arial"/>
      <Setter Property="FontWeight" Value="Bold"/>
      <Setter Property="Margin" Value="0,3,10,0"/>
    </Style>
  </Page.Resources>
  <StackPanel>
    <Border Style="{StaticResource PageBackground}">
      <DockPanel>
        <TextBlock Style="{StaticResource TitleText}">Title</TextBlock>
        <TextBlock Style="{StaticResource Label}">Label</TextBlock>
        <TextBlock DockPanel.Dock="Top" HorizontalAlignment="Left" FontSize="36" Foreground="{StaticResource MyBrush}" Text="Text" Margin="20" />
        <Button DockPanel.Dock="Top" HorizontalAlignment="Left" Height="30" Background="{StaticResource MyBrush}" Margin="40">Button</Button>
        <Ellipse DockPanel.Dock="Top" HorizontalAlignment="Left" Width="100" Height="100" Fill="{StaticResource MyBrush}" Margin="40" />
      </DockPanel>
    </Border>
  </StackPanel>
</Page>


サンプル全体については、「リソースの定義のサンプル」を参照してください。

Windows Vista

.NET Framework および .NET Compact Framework では、各プラットフォームのすべてのバージョンはサポートしていません。サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。

.NET Framework

サポート対象 : 3.5、3.0

コミュニティの追加

追加
表示:
© 2014 Microsoft