J'ai répondu à une question simulaire here et édité pour WPF aussi, vous pouvez utiliser une propriété interessante de la façon dont le moteur de compisition fonctionne pour revêtir d'une pompe répartiteur, dans l'un des contextes de rendu. C'est une option vraiment légère. De plus, je suppose que vous connaissez le enterprise library et le unity?
Il ya un WPF application block donc l'utilisation de ce modèle n'est pas trop douloureuse;) Mais ils ne disent pas, pas de douleur pas de gain?
Il y a aussi CAB (Composite UI Application Block), des liens dans l'unité. Les personnes WPF SDK ont conçu une plate-forme WPF Silverlight &. (a.k.a Prisme).
Oh droite, vous a également demandé au sujet des ressources? Je préfère charger les sources de ressources manuellement dans la classe Application. Une chose que j'ai réalisé, disons que vous avez un ResourceDictionary dans un sous-dossier et que vous chargez MergedDictionaries dans ce ResourceDictionary. Donc, si dans votre classe Application, vous chargez "my-res-dir/MergedDictionaryLoader.xaml" (par code ou xaml), TOUTES LES CHARGES FUTURES DE MERGEDDICTIONARIES SONT CHARGÉES DE "mon-res-dir". Un peu fou si vous me le demandez, je pense que le répertoire actuel du processus n'a pas changé, vous devez spécifier "mon-res-dir/foo.xaml" pour tous vos répertoires supplémentaires. Cependant ce n'est pas le cas (je ne crois pas que cela soit documenté nulle part au moins très bien et devrait être considéré comme un bug imho).
Alors rappelez-vous, WPF chargement de dictionnaire de ressources va être basée hors du répertoire à partir duquel le XAML actuelle est. Donc, vous spécifiez Source = « foo.xaml » à partir de votre « my-res-dir/MergedDictionaryLoader.xaml ". J'ai même joué avec le pack URI/syntaxe absolue, mais je n'ai jamais trouvé cela aussi beaucoup plus intuatif.