方法 : リソースを定義および参照するHow to: Define and Reference a Resource

この例では、Extensible Application Markup Language (XAML)Extensible Application Markup Language (XAML)の属性を使用してリソースを定義し、それを参照する方法を示します。This example shows how to define a resource and reference it by using an attribute in Extensible Application Markup Language (XAML)Extensible Application Markup Language (XAML).

Example

次の例では、2種類のリソースを定義しています。 SolidColorBrush リソースと、いくつかの Style リソースです。The following example defines two types of resources: a SolidColorBrush resource, and several Style resources. SolidColorBrush リソース MyBrush は、それぞれが Brush 型の値を受け取るいくつかのプロパティの値を提供するために使用されます。The SolidColorBrush resource MyBrush is used to provide the value of several properties that each take a Brush type value. Style リソース PageBackgroundTitleText、および Label は、特定のコントロールの種類を対象とします。The Style resources PageBackground, TitleText and Label each target a particular control type. スタイルリソースがリソースキーによって参照され、XAMLXAMLで定義されているいくつかの特定のコントロール要素の Style プロパティを設定するために使用される場合、スタイルは対象のコントロールにさまざまなプロパティを設定します。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 XAMLXAML.

Label スタイルの setter 内のいずれかのプロパティも、前に定義した MyBrush リソースを参照していることに注意してください。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. また、 StaticResource マークアップ拡張機能を使用して別のリソース内から参照する場合は、ディクショナリ内で見つかった順序によってリソースが要求されます。Resources are also requested by the order found within the dictionary if you use the StaticResource Markup Extension 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. 必要に応じて、 Dynamicresource マークアップ拡張機能を使用してリソース参照の厳密な作成順序を回避し、代わりに実行時にリソースを参照することができますが、この dynamicresource 手法はパフォーマンスを備えていることに注意する必要があります。措置.If necessary, you can work around the strict creation order of resource references by using a DynamicResource Markup Extension to reference the resource at runtime instead, but you should be aware that this DynamicResource technique has performance consequences. 詳細については、「 XAML Resources」を参照してください。For details, see XAML Resources.

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

関連項目See also