Partager via


attribut x :Shared

Lorsqu’elle est définie sur false, modifie le comportement de récupération des ressources WPF afin que les demandes de la ressource attribuée créent une nouvelle instance pour chaque requête au lieu de partager la même instance pour toutes les requêtes.

Utilisation des attributs XAML

<ResourceDictionary>
  <object x:Shared="false".../>
</ResourceDictionary>

Remarques

x:Shared est mappé à l’espace de noms XAML du langage XAML et est reconnu comme un élément de langage XAML valide par les services XAML .NET et ses lecteurs XAML. Toutefois, les fonctionnalités indiquées de x:Shared sont uniquement pertinentes pour les applications WPF et pour l’analyseur XAML WPF. Dans WPF, x:Shared n’est utile qu’en tant qu’attribut lorsqu’il est appliqué à un objet qui existe dans un ResourceDictionaryWPF . Les autres utilisations ne lèvent pas d’exceptions d’analyse ou d’autres erreurs, mais elles n’ont aucun effet.

La signification de x:Shared n’est pas spécifiée dans la spécification du langage XAML. D’autres implémentations XAML, telles que celles qui s’appuient sur les services XAML .NET, ne fournissent pas nécessairement la prise en charge du partage de ressources. Ces implémentations XAML peuvent fournir un comportement similaire dans l’infrastructure de prise en charge qui a également utilisé des valeurs x:Shared.

Dans WPF, la condition de x:Shared par défaut pour les ressources est true. Cette condition signifie que toute demande de ressource donnée retourne toujours la même instance.

La modification d’un objet retourné par le biais d’une API de ressource, telle que FindResource, ou la modification d’un objet directement dans un ResourceDictionary, modifie la ressource d’origine. Si les références à cette ressource étaient des références de ressources dynamiques, les consommateurs de cette ressource obtiennent la ressource modifiée.

Si les références à la ressource étaient des références de ressources statiques, les modifications apportées à la ressource après le temps de traitement XAML ne sont pas pertinentes. Pour plus d’informations sur les références de ressources statiques et dynamiques, consultez Vue d’ensemble des ressources XAML (WPF .NET).

La spécification explicite de x:Shared="true" est rarement effectuée, car il s’agit déjà de la valeur par défaut. Il n’existe aucun équivalent de code direct pour x:Shared dans le modèle objet WPF ; elle ne peut être spécifiée que dans une utilisation XAML et doit être traitée par le comportement WPF par défaut ou dans un flux de nœud XAML intermédiaire sur le chemin de chargement s’il est traité à l’aide des services XAML .NET et de ses lecteurs XAML.

Un scénario pour x:Shared="false" est que vous définissez une classe dérivée FrameworkElement ou FrameworkContentElement en tant que ressource, puis que vous introduisez la ressource d’élément dans un modèle de contenu. x:Shared="false" permet à une ressource d’élément d’être introduite plusieurs fois dans la même collection (par exemple, un UIElementCollection). Sans x:Shared="false" cela n’est pas valide, car la collection applique l’unicité de son contenu. Toutefois, le comportement x:Shared="false" crée une autre instance identique de la ressource au lieu de retourner la même instance.

Un autre scénario pour x:Shared="false" est que vous utilisez une ressource Freezable pour les valeurs d’animation, mais que vous souhaitez modifier la ressource en fonction de l’animation.

La gestion des chaînes de false n’est pas sensible à la casse.

Dans WPF, x:Shared est valide uniquement dans les conditions suivantes :

Voir aussi