Cette documentation est archivée et n’est pas conservée.

FrameworkElement.Resources, propriété

Mise à jour : novembre 2007

Obtient ou définit le dictionnaire de ressources défini localement.

Espace de noms :  System.Windows
Assembly :  PresentationFramework (dans PresentationFramework.dll)
XMLNS pour XAML : http://schemas.microsoft.com/winfx/xaml/presentation

public ResourceDictionary Resources { get; set; }
/** @property */
public ResourceDictionary get_Resources()
/** @property */
public  void set_Resources(ResourceDictionary value)

public function get Resources () : ResourceDictionary
public function set Resources (value : ResourceDictionary)
<object>
  <object.Resources>
    oneOrMoreResourceElements
  </object.Resources>
</object>
oneOrMoreResourceElements
                    Un ou plusieurs éléments objet, chacun d'entre eux définissant une ressource. Chaque élément de propriété de ressource dans chaque ResourceDictionary doit avoir une valeur unique pour x:Key, attribut servant de clé unique lorsque les valeurs sont récupérées de ResourceDictionary.
                

Valeur de propriété

Type : System.Windows.ResourceDictionary

Dictionnaire actif défini localement pour les ressources, où chaque ressource peut être accédée par clé.

Les dictionnaires de ressources, qui peuvent être complètement ou partiellement définis en XAML (Extensible Application Markup Language), sont créés en général sous forme d'élément de propriété et se trouvent à l'élément racine de n'importe quelle page ou pour l'application toute entière. Placer le dictionnaire de ressources à ce niveau simplifie la recherche d'éléments enfants donnés dans la page (ou de n'importe quelle page, dans le cas d'une application). Dans la plupart des scénarios d'application, nous vous recommandons de définir les styles comme éléments objet dans un dictionnaire de ressources, ou comme ressources externes afin que la ressource de style entière puisse être autonome (cette approche permet de séparer les responsabilités du concepteur de celles du développeur à l'aide de fichiers physiques qui doivent être modifiés).

Notez que cette propriété retourne uniquement le dictionnaire de ressources déclaré directement dans cet élément. Ce cas de figure est différent du processus même de recherche de ressources, où un élément enfant peut accéder à toutes les ressources définies dans chaque élément parent, en recherchant vers les niveaux supérieurs de manière récursive.

Les ressources peuvent également être référencées par code depuis la collection, mais sachez que les ressources créées en XAML ne sont pas du tout accessibles tant que Loaded n'a pas été déclenché par l'élément qui déclare le dictionnaire. En fait, les ressources sont analysées de façon asynchrone. L'événement Loaded ne constitue pas en soi l'assurance que vous pouvez référencer une ressource XAML définie. Pour cette raison, vous devez en général accéder uniquement aux ressources XAML définies dans le cadre du code d'exécution ou par le biais d'autres techniques XAML comme les styles ou les références d'extension de ressource pour les valeurs d'attribut. Lorsque vous accédez aux ressources par le biais du code, cela revient globalement à un référencement de DynamicResource depuis XAML.

L'objet ResourceDictionary sous-jacent prend en charge les méthodes requises pour ajouter, supprimer ou demander des ressources à partir de la collection en utilisant du code. La propriété Resources peut être définie de façon à prendre en charge le scénario du remplacement complet de la collection de ressources d'un élément en ResourceDictionary nouveau ou différent.

Notez que la syntaxe XAML montrée n'inclut pas d'élément pour ResourceDictionary. L'exemple reprend une syntaxe de collection implicite ; une balise représentant l'élément de collection peut être omise. Les éléments ajoutés comme éléments à la collection sont spécifiés à la place. Pour plus d'informations sur les collections implicites et XAML, consultez Terminologie de la syntaxe XAML. Un cas où un ResourceDictionary est encore spécifié explicitement comme un élément se produit si vous introduisez un dictionnaire fusionné, auquel cas il n'y a en général aucun élément enfant pour ce ResourceDictionary. Pour plus d'informations, consultez Dictionnaires de ressources fusionnés.

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

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


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

Windows Vista

Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

.NET Framework

Pris en charge dans : 3.5, 3.0
Afficher: