このページは役に立ちましたか。
このページのコンテンツについての ご意見をお待ちしております
その他にご意見はありますか。
残り 1500 文字
Resources プロパティ
この記事は翻訳者によって翻訳されたものです。 記事の文章にポインターを重ねると、原文のテキストが表示されます。
訳文
原文

FrameworkElement.Resources プロパティ

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

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

[AmbientAttribute]
public ResourceDictionary Resources { get; set; }
<object>
  <object.Resources>
    oneOrMoreResourceElements
  </object.Resources>
</object>

XAML の値

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 には子要素がありません。 詳細については、「マージされたリソース ディクショナリ」を参照してください。

This example shows how to define a resource and reference it by using an attribute in Extensible Application Markup Language (XAML).

The following example defines two types of resources: a SolidColorBrush resource, and several Style resources. The SolidColorBrush resource MyBrush is used to provide the value of several properties that each take a Brush type value. The Style resources PageBackground, TitleText and Label each target a particular control type. The styles set a variety of different properties on the targeted controls, when that style resource is referenced by resource key and is used to set the Style property of several specific control elements defined in XAML.

Note that one of the properties within the setters of the Label style also references the MyBrush resource defined earlier. This is a common technique, but it is important to remember that resources are parsed and entered into a resource dictionary in the order that they are given. Resources are also requested by the order found within the dictionary if you use the StaticResource のマークアップ拡張機能 to reference them from within another resource. Make sure that any resource that you reference is defined earlier within the resources collection than where that resource is then requested. If necessary, you can work around the strict creation order of resource refererences by using a DynamicResource のマークアップ拡張機能 to reference the resource at runtime instead, but you should be aware that this DynamicResource technique has performance consequences. For details, see リソースの概要.


<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>


.NET Framework

サポート対象: 4、3.5、3.0

.NET Framework Client Profile

サポート対象: 4、3.5 SP1

Windows 7, Windows Vista SP1 以降, Windows XP SP3, Windows Server 2008 (Server Core はサポート対象外), Windows Server 2008 R2 (SP1 以降で Server Core をサポート), Windows Server 2003 SP2

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

コミュニティの追加

追加
表示:
© 2015 Microsoft