Partager via


Comment : définir et référencer une ressource

Mise à jour : novembre 2007

Cet exemple montre comment définir une ressource et la référencer à l'aide d'un attribut en XAML (Extensible Application Markup Language).

Exemple

L'exemple suivant définit deux types of ressources : une ressource SolidColorBrush et plusieurs ressources Style. La ressource SolidColorBrushMyBrush 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 ciblent chacune un type de contrôle particulier. Les styles définissent diverses propriétés sur les contrôles ciblés lorsque cette ressource de style est référencée par une 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 des accesseurs Set de propriétés du style Label fait également référence à la ressource MyBrush définie précédemment. C'est 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 où elles sont fournies. Les ressources sont également demandées dans l'ordre où elles se trouvent dans le dictionnaire si vous utilisez l'StaticResource, extension de balisage pour les référencer à partir d'une autre ressource. Assurez-vous que toute ressource que vous référencez a été définie dans la collection de ressources avant l'endroit où la ressource est demandée. Si nécessaire, vous pouvez contourner l'ordre strict de création des références de ressources en utilisant une Extension de balisage DynamicResource pour référencer la ressource au moment de l'exécution, mais vous devez savoir que la technique DynamicResource a des conséquences sur les performances. Pour plus d'informations, consultez Vue d'ensemble des ressources.

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

Pour l'exemple complet, consultez Définition d'une ressource, exemple.

Voir aussi

Tâches

Définition d'une ressource, exemple

Concepts

Vue d'ensemble des ressources

Application d'un style et création de modèles