2010-08-05 7 views
1

Supposons que j'ai un fichier xaml lâche contenant une ressource, avec "MyResource", et que je tire ce fichier xaml libre dans deux autres fichiers xaml via ResourceDictionary.MergedDictionaries. Maintenant, supposons que je mets la ligne de code suivante dans les deux fichiers de code-behind pour les deux fichiers XAML:Nombre d'objets résultant d'un fichier xaml lâche

object obj = FindResource("MyResource"); 

Est-ce que les références soient au même objet, ou seront-ils à des objets distincts?

Merci, Dave

+0

je parie que c'est une collection avec plusieurs objets –

Répondre

0

La réponse dépend de la façon dont vous chargez le fichier lâche XAML. Si vous le chargez une fois et que la même référence est ajoutée à deux Dictionnaires fusionnés différents, vous obtiendrez par défaut la même référence à votre "MyResource".

Si vous chargez le fichier XAML deux fois, vous créerez effectivement deux instances de ResourceDictionary (et donc deux instances de votre ressource).

Dans un seul ResourceDictionary, vous pouvez spécifier si une ressource est partagée à l'aide de l'attribut x:Shared, ce qui est vrai par défaut. Définir this à false, forcera la création de nouvelles instances pour chaque requête de la ressource. Il existe certaines restrictions sur l'utilisation de cet attribut, qui sont expliquées sur la page MSDN.

Questions connexes