Share via


方法 : リソースを定義および参照する

更新 : 2007 年 11 月

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

使用例

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

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

<Page Name="root"
  xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="https://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>

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

参照

処理手順

リソースの定義のサンプル

概念

リソースの概要

スタイルとテンプレート