J'ai un ensemble de styles et de brosses définies dans un ResourceDictionary que je suis le chargement en tant que MergedDictionary en XAML de mon contrôle de haut niveau:Remplacement Fusionné Dictionnaires de ressources sur la charge de Silverlight application
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/MyAssembly;component/Styles.xaml"/>
</ResourceDictionary.MergedDictionaries>
Je suis en train à éventuellement remplacer certains de ces styles & brosses si un fichier XAML différent existe dans le XAP avec son propre ResourceDictionary. J'essaye de fusionner dans ce dictionnaire à l'exécution avant qu'InitializeComponent() soit appelé sur mon contrôle d'utilisateur. J'utilise le code suivant pour tenter de le faire:
public static class StyleLoader
{
public static void MergeStyle(string xamlUri)
{
try
{
XDocument xaml = XDocument.Load(xamlUri);
ResourceDictionary rd = XamlReader.Load(xaml.ToString()) as ResourceDictionary;
Application.Current.Resources.MergedDictionaries.Add(rd);
}
catch (XmlException ex)
{
// if the file doesn't exist, we can't add it
}
}
}
Le dictionnaire de ressources à partir du fichier facultatif est bien chargé et fusionné, mais mon jeu original de styles semble toujours être redéfinissant cette. Si je commente le dictionnaire fusionné en XAML et de les charger simplement à l'exécution afin qu'il fonctionne parfaitement:
StyleLoader.MergeStyle("/MyAssembly;component/Styles.xaml");
StyleLoader.MergeStyle("BrushReplacements.xaml");
InitializeComponent();
Mon problème avec cette solution est que sans les styles par défaut dans XAML, je ne peux pas ouvrir le projet dans Blend . Quelqu'un a-t-il des idées pour une solution qui gardera mes styles par défaut connus de Blend mais qui me permettra de les surcharger à l'exécution avec un dictionnaire de ressources chargé dynamiquement? Merci!
Ce n'est pas vraiment la façon dont je voulais le faire (cela semble vraiment devoir être résolu avec des ressources au lieu de pinceaux de liaison) ... mais cela semble être la meilleure approche de contournement des styles dynamiques que j'ai vus donc je vais le marquer comme répondu. –