2010-05-11 3 views
0

Je dois dire que je suis assez nouveau chez WPF. Je construis ma première vraie application et je suis confronté à quelques problèmes, en ce moment avec des thèmes. C'est la raison de mon post.WPF Theming: pas appliqué à TextBox, pourquoi?

Pour utiliser un thème, tel que ExpressionDark.xaml, j'ai pensé qu'il suffisait de l'inclure au niveau de l'application. Par conséquent, dans mon App.xaml j'ajouté:

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="/Skins/ExpressionDark.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 
     <myLib:Locator x:Key="Locator" /> 
    </ResourceDictionary> 
</Application.Resources> 

Voici la première question: Je ne suis pas sûr que je suis en train de faire la bonne chose. Est-il correct d'inclure le ExpressionDark.xaml dans mon application, dans le dossier "skins" et de le référencer de cette façon? ailleurs, j'ai trouvé quelque chose comme "System.Windows.Theming.ExpressionDark" etc. Serait-ce la bonne approche? Quoi qu'il en soit, en appliquant le thème avec la méthode ci-dessus, je peux voir presque toutes mes commandes être stylées d'une manière appropriée; Je dis "presque tout" parce que certains d'entre eux, comme DataGrids ou TextBoxes ne le sont pas. J'ai vérifié dans ExpressionDark.xaml et je vois qu'il y a des styles définis pour ces composants aussi. Alors pourquoi je reçois ce comportement étrange?

J'espère que j'ai expliqué tout assez clairement. Faites-moi savoir si ce n'est pas le cas.

Merci d'avance pour toute aide que vous serez en mesure de fournir.

Cheers,

G.

+0

Pouvez-vous poster du code où vous définissez un DataGrid ou TextBox. – ChrisF

Répondre

0

Ok, je pense que je l'ai découvert ce qui se passe.

Dans App.xaml, j'ai défini le dictionnaire Style que j'aimerais utiliser pour mon application. Dans mon MainWindow.xaml, dans les ressources "locales", il y avait un autre dictionnaire qui remplaçait apparemment celui qui avait été hérité par App.xaml.

J'ai déplacé le dictionnaire local (celui de la fenêtre) avec les Dictionnaires Merged de l'application et tous mes contrôles sont stylés correctement.

Je ne comprends pas la raison de ce comportement. Les deux dictionnaires n'étaient pas destinés à s'affronter, je supposais qu'il était possible d'utiliser un dict général dans App et un plus spécialisé dans Windows. Alors, est-ce que vous avez une idée de ce que je faisais de mal?

Merci encore pour votre aide, Cheers, Gianluca.

+1

Puisque vous aviez plusieurs styles, le contrôle utilisait le premier auquel il arrivait en regardant l'arbre visuel. Comme il y avait une définition dans le Mainwindow.xaml pour le TextBox est arrêté là alors que les autres contrôles devaient aller plus loin au fichier App.xaml. Les contrôles qui ne trouvent pas de style utiliseront le chrome par défaut. –

+0

Merci Mike B de le signaler. –