次の方法で共有


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

この例からは、Extensible Application Markup Language (XAML) で属性を使用することでリソースを定義し、それを参照する方法がわかります。

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

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

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

関連項目