2010-03-30 7 views
3

Je dois avoir des couleurs génériques dans mon application, basées sur les couleurs du système, qui changent en fonction du thème actif. Donc je crois que j'ai besoin de IValueConverters qui retournent chacun un pinceau quand on leur donne un pinceau de couleur système.Couleurs génériques WPF basées sur SystemColors

Mais où puis-je mettre la logique? Comme je le vois, je pourrais avoir 2 options. Option 1) place SolidColorBrush dans le dictionnaire de ressources à thème, qui lie à certaines couleurs du système et les convertit en nouveau (s) pinceau (s). C'est ce que j'ai essayé et cela semble fonctionner, mais comment puis-je faire référence à ces nouveaux SolidColorBrush (es) à partir de code-behind.

Option 2) créer une classe similaire à la classe SystemColors. Je ne sais pas très bien comment je vais faire ça. Quelle est la relation entre SystemResourceKey et le pinceau dans la classe SystemColors? Comment sont-ils connectés?

Cordialement, Jesper

Répondre

0

1. par exemple

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        xmlns:local="clr-namespace:Test"> 
    <SolidColorBrush x:Key="Brush1" Color="Green"/> 
</ResourceDictionary> 
ResourceDictionary dict = new ResourceDictionary(); 
dict.Source = new Uri("pack://application:,,,/TestDictionary.xaml"); 
Brush brush1 = dict["Brush1"] as SolidColorBrush; 

2. Vous ne pouvez pas utiliser SystemResourceKeys, ils sont internes, mais peuvent probablement réutiliser les clés de la classe SystemColors pour construire votre dictionnaire, il ne compte pas vraiment ce que vous utilisez, un clé peut être n'importe quel objet, this question pourrait être d'intérêt.

Questions connexes