Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

FrameworkElement.Resources, propriété

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/2006/xaml/presentation, http://schemas.microsoft.com/netfx/2007/xaml/presentation

[AmbientAttribute]
public ResourceDictionary Resources { get; set; }
<object>
  <object.Resources>
    oneOrMoreResourceElements
  </object.Resources>
</object>

Valeurs XAML

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 le x:Key, directive, qui sert comme clé unique lorsque les valeurs sont récupérées du 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 comme un élément de propriété et sont en général à l'élément racine pour toute page individuelle ou pour l'application. Placer le dictionnaire de ressources à ce niveau simplifie la recherche d'éléments enfants individuels dans la page (ou de toute page, dans le cas d'une application). Dans la plupart des scénarios d'application, nous recommandons que les styles soient définis comme éléments objet dans un dictionnaire de ressources, ou soit définis 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 en séparant les 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. C'est différent du processus actuel 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 le haut 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 accéder en général uniquement aux ressources XAML définies dans le cadre du code au moment de l'exécution, ou par le biais d'autres techniques XAML comme les styles ou les références d'extension de ressource les valeurs d'attribut. Lorsque vous accédez aux ressources à travers le code, c'est globalement équivalent à une référence DynamicResource effectuée 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.

Remarquez que la syntaxe XAML montrée n'inclut pas d'élément pour le ResourceDictionary. C'est un exemple de syntaxe de collection implicite ; une balise qui représente 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 Syntaxe XAML en détail. 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 DynamicResource, extension de balisage 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 Ressources 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 Framework

Pris en charge dans : 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

.NET pour les applications Windows Phone

Pris en charge dans : Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

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

Ajouts de la communauté

AJOUTER
Afficher:
© 2015 Microsoft