Merci MABROUKI !
Ton intervention me fait avancer, mais pourtant ne résoud pas le problème... pourtant je sens que c'est en partie la bonne piste.
Je m'explique:
Ce qui fonctionne, c'est que effectivement, la "SolidColorBrush" est bien Frozen quand le plantage a lieu.
Il est alors possible, plutôt que de modifier la propriété .Color de cet objet Frozen, de le cloner et de modifier la propriété .Color de l'objet cloné.
Ce qui en fonctionne pas, c'est que la SolidColorBrush concernée dans les ressources de mon formulaire (fichier xaml) n'est pas impacté
1 2 3 4 5 6 7
| <Window.Resources>
<SolidColorBrush x:Key="BackgroundBrush" Color="LightBlue" />
</Window.Resources>
(...)
<Button Name="ControlCaption0" Margin="10,2,10,2" Content="Afficher le manuel" Background="{DynamicResource BackgroundBrush}" Click="ButAfficheHelp_Click"/> |
Normal me direz-vous, puisqu'on modifie la propriété d'un clone, et pas de l'objet lui-même... Mais alors comment faire ?
Dans l'exemple de MABROUKI, on fini par
Me.mainGrid.Background = myBrushClone
ce qui veut dire que l'on utilise le clone pour affecter le formulaire.
Si je veux avoir le même fonctionnement, faut-il que je supprime ma DynamicResource (c'est à dire tout le block <Window.Resources>, ainsi que le "{DynamicResource BackgroundBrush}") et que j'intervienne sur la couleur de chacun des boutons de mon formulaires un à un avec la .Color du clone ? Je trouverais dommage de ne plus utiliser ce <Window.Resources> qui est préconisé pour un codage xaml propre...
Est-ce conseillé ? Ou avez-vous une meilleure idée ?
Partager