Je travaille actuellement sur des dictionnaires de styles et de modèles que je peux appliquer dynamiquement à mon application. Avant cette « nouvelle voulait » un comportement dynamique, j'ai eu plusieurs dictionnaires de ressources, un pour chaque commande de style, que je fusionné dans le App.xaml: Ressource statique partagée dans les dictionnaires fusionnés
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="ColorsDictionary.xaml"/>
<ResourceDictionary Source="ControlsTemplatesDictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
Maintenant, je voudrais que ma demande soit de style, J'ai donc décidé de fusionner toutes mes ressources précédentes en une nouvelle appelée "MyFirstTemplates" et d'ajouter seulement ce dictionnaire à l'App.xaml.
Nouveau dictionnaire "MyFirstTemplates.xaml":
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">"
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="ColorsDictionary.xaml"/>
<ResourceDictionary Source="ControlsTemplatesDictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
Nouveau App.xaml:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="MyFirstTemplates.xaml"/>
</ResourceDictionary.MergedDictionaries>
<Style TargetType="{x:Type Window}"/>
</ResourceDictionary>
</Application.Resources>
Note: Le style par défaut de la fenêtre est de corriger un bug de WPF 4, voir Adding a Merged Dictionary to a Merged Dictionary
Maintenant que j'ai fait ce changement, je ne peux pas utiliser une ressource de couleur de "ColorsDictionary.xaml" comme StaticResource plus dans "ControlsTemplateDictionary.xaml". Si je reviens à fusionner ces fichiers dans le fichier app.xaml, tout fonctionne. Pour le faire fonctionner, je dois changer ces StaticResource pour DynamicResource. Avez-vous une idée de pourquoi cela ne fonctionne plus?
Merci :-)
Merci pour votre perspicacité :-) –