2010-12-13 59 views
2

Mon application est composée de plusieurs assemblys ("plug-ins") chargés par un assemblage exécutable de base (qui ne contient aucun contrôle ni aucune fenêtre). Maintenant, je veux appliquer des styles aux contrôles (tels que Menus/ContextMenus, ToolBar (Tray) s etc.) à partir des styles Application.Resources de l'assemblage central (éventuellement avec la possibilité pour les utilisateurs de choisir parmi plusieurs thèmes).Application d'un style global à plusieurs assemblages

Je l'ai eu à travailler avec des styles nommés (x:Key="StyleName", invoqués par DynamicResource, StaticResource ne fonctionnerait pas), mais la perspective d'ajouter le Style="{DynamicResource ...}" à chaque commande dans chaque assemblée me fait peur Quire un peu. Mais les styles à l'échelle du contrôle avec TargetType="{x:Type TypeName}" ne fonctionneront pas, peu importe ce que je fais.

Comment puis-je styliser toutes les commandes en masse à partir d'un assemblage central?

Merci pour votre aide.

+0

L'ajout de ces styles à App.xaml ne vous donne donc aucun effet? –

+0

Oui, ne fait rien. –

+0

Je suis incapable de reproduire cela. Juste pour être sûr que ce n'est pas le problème, ToolbarTray est une faute de frappe? Doit être ToolBarTray :) –

Répondre

2

Peut-être que this great article on WPF skinning pourrait vous aider à vous orienter dans la bonne direction? Dans l'introduction, il met en évidence les «trois piliers» pour skinning/theming et comment les ressources hiérarchiques peuvent être exploitées.

Bien que je crains (sans certitude) que vous pourriez avoir besoin de changer vos ressources statiques en ressources dynamiques.

+0

L'article a conduit à une solution: J'ai tous les styles spécifiés dans un ResourceDictionary à l'intérieur de la propriété MergedDcitionaries de la balise ResourceDictionary principale avec un lien vers un habillage pour un UserCrontrol que j'utilise. J'ai déplacé les syles dans le dictionnaire de ressources principal et cela fonctionne soudainement. Je ne savais pas que ResourceDictionary pouvait avoir à la fois MergedDictionaries et ses propres ressources, donc j'ai mis les ressources locales dans un dictionnaire fusionné. Merci pour le lien, c'est vraiment un excellent article. –