Guide pratique pour définir et référencer une ressource
Cet exemple montre comment définir une ressource et la référencer à l’aide d’un attribut dans XAML (Extensible Application Markup Language).
Exemple
L’exemple suivant définit deux types de ressources : une ressource SolidColorBrush et plusieurs ressources Style. La SolidColorBrush ressource MyBrush
est utilisée pour fournir la valeur de plusieurs propriétés qui prennent chacune une valeur de type Brush. Les ressources StylePageBackground
, TitleText
et Label
chaque cible un type de contrôle particulier. Les styles définissent une variété de propriétés différentes sur les contrôles ciblés, lorsque cette ressource de style est référencée par la clé de ressource et utilisée pour définir la propriété Style de plusieurs éléments de contrôle spécifiques définis en XAML.
Notez que l’une des propriétés dans les setters du style Label
fait également référence à la ressource MyBrush
définie précédemment. Il s’agit d’une technique courante, mais il est important de se rappeler que les ressources sont analysées et entrées dans un dictionnaire de ressources dans l’ordre dans lequel elles sont données. Les ressources sont également demandées par l’ordre trouvé dans le dictionnaire si vous utilisez l'StaticResource Markup Extension pour les référencer à partir d’une autre ressource. Assurez-vous que toute ressource que vous référencez est définie précédemment dans la collection de ressources que l’emplacement où cette ressource est ensuite demandée. Si nécessaire, vous pouvez contourner l’ordre de création strict des références de ressources à l’aide d’une extension de balisage DynamicResource
<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>
Voir aussi
.NET Desktop feedback