x:Shared, attribut
Lorsque la valeur est définie false
, modifie le comportement de récupération des ressources WPF afin que les demandes de la ressource attribuée créent une instance pour chaque requête au lieu de partager la même instance pour toutes les requêtes.
Utilisation d'attributs XAML
<ResourceDictionary>
<object x:Shared="false".../>
</ResourceDictionary>
Notes
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 x:Shared
indiquées 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 WPF ResourceDictionary. 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 x:Shared
valeurs.
Dans WPF, la condition par défaut x:Shared
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, par FindResourceexemple, 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 x:Shared="true"
explicite est rarement effectuée, car il s’agit déjà de la valeur par défaut. Il n’existe pas d’équivalent de code direct dans x:Shared
le modèle objet WPF ; il ne peut être spécifié que dans une utilisation XAML et doit être traité 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.
Dans ce casx:Shared="false"
, si vous définissez une FrameworkElement classe ou FrameworkContentElement une classe dérivée en tant que ressource, puis que vous introduisez la ressource d’élément dans un con mode tente l. x:Shared="false"
permet à une ressource d’élément d’être introduite plusieurs fois dans la même collection (par exemple, a UIElementCollection). Sans x:Shared="false"
cela, cela n’est pas valide, car la collection applique l’unicité de son contenu. Toutefois, le x:Shared="false"
comportement crée une autre instance identique de la ressource au lieu de retourner la même instance.
Un autre scénario x:Shared="false"
consiste à utiliser une Freezable ressource pour les valeurs d’animation, mais que vous souhaitez modifier la ressource en fonction de l’animation.
La gestion des chaînes n’est false
pas sensible à la casse.
Dans WPF, x:Shared
n’est valide que dans les conditions suivantes :
Celui ResourceDictionary qui contient les éléments avec
x:Shared
devront être compilés. Impossible ResourceDictionary d’utiliser le code XAML libre ou utilisé pour les thèmes.Les ResourceDictionary éléments qui contiennent les éléments ne doivent pas être imbriqués dans un autre ResourceDictionary. Par exemple, vous ne pouvez pas utiliser
x:Shared
pour les éléments d’un StyleResourceDictionary élément qui se trouve déjà dans un ResourceDictionary élément.
Voir aussi
.NET Desktop feedback