2009-09-09 7 views
3

J'utilise le cadre d'extensibilité géré pour une application WPF. J'ai défini des interfaces pour ce que l'on appelle les points d'extension qui fournissent de nouvelles fonctionnalités à l'application. Certaines de ces fonctionnalités peuvent être d'afficher des données en utilisant certains modèles de données, ce que vous voudrez probablement spécifier dans un fichier de ressources xaml. Si j'ai un de ces points d'extension (c'est-à-dire des plugins en langage clair) défini dans un assembly qui n'est pas connu au moment de la compilation de l'application, mais je veux fusionner les ressources du plugin avec celles de l'application. à propos de ça?Fusion dynamique de dictionnaires de ressources lors de l'exécution (pour les plugins)

Tous les exemples qui montrent comment faire cela en utilisant l'état de notation URI du paquet qui est la solution lorsque les assemblages que vous référencez sont connus au moment de la compilation. Comment obtenez-vous la même chose lorsque vous n'êtes pas familier avec l'assemblage à la compilation?

Répondre

4

Vous devez obtenir - soit par code ou par convention - les détails du dictionnaire de ressources à fusionner. Les détails peuvent être le nom du dictionnaire de ressources ou l'instance ResourceDictionary elle-même.

Dans ce dernier cas, vous avez l'instance ResourceDictionary de sorte que vous pouvez simplement la fusionner dans vos ressources de niveau Application (ou n'importe quel niveau approprié).

Dans le premier cas, vous devrez construire un pack URI approprié en utilisant le nom de l'assembly (que vous pouvez obtenir à partir de l'extension en appelant extension.GetType().Assembly). Puis créez un ResourceDictionary dont Source est défini sur l'URI du pack. Enfin, fusionnez cela dans le niveau approprié de votre arborescence de ressources.

+0

Bonne réponse. +1 Une autre grande réponse à cet ensemble spécifique de contraintes est dans ce post: http://stackoverflow.com/questions/842571/using-mef-to-import-a-wpf-datatemplate –

Questions connexes