この例では、拡張アプリケーション マークアップ言語 (XAML) の属性を使用してリソースを定義し、それを参照する方法を示します。
例
次の例では、SolidColorBrush リソースと複数の Style リソースの 2 種類のリソースを定義します。 SolidColorBrush リソース MyBrush
は、それぞれが Brush 型の値を受け取る複数のプロパティの値を提供するために使用されます。 各 Style リソースは、特定のコントロールの種類をターゲット PageBackground
、TitleText
、および Label
します。 スタイル リソースがリソース キーによって参照され、XAML で定義されている複数の特定のコントロール要素の Style プロパティを設定するために使用される場合、スタイルはターゲット コントロールにさまざまなプロパティを設定します。
Label
スタイルのセッター内のプロパティの 1 つが、前に定義した MyBrush
リソースも参照していることに注意してください。 これは一般的な手法ですが、リソースが解析され、指定された順序でリソース ディクショナリに入力されることを覚えておく必要があります。 また、StaticResource Markup Extension を使用して別のリソース内から参照する場合は、ディクショナリ内で見つかった順序によってリソースが要求されます。 参照するすべてのリソースが、そのリソースが要求される場所よりも前にリソース コレクション内で定義されていることを確認します。 必要に応じて、DynamicResource Markup Extension を使用して実行時にリソースを参照することで、リソース参照の厳密な作成順序を回避できますが、この 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>
関連項目
.NET Desktop feedback