2010-03-12 4 views
1

I ont une ressource d'application des éléments suivantsWPF Articles de menu Styles

<Style TargetType="{x:Type TextBlock}"> 
    <Setter Property="Background" Value="{DynamicResource windowTextBackColor}"/> 
    <Setter Property="Foreground" Value="{DynamicResource windowsTextForeColor}"/> 
</Style> 

Ainsi, tous les blocs de texte dans mon application doivent assumer ces couleurs.

Cependant le Menu et ses MenuItems contenant sur ma fenêtre principale ne prennent pas ces couleurs?

Je dois faire le XAML

pour elle d'assumer ces couleurs, est-il une raison pour laquelle la fixation d'un style qui vise des blocs de texte ne fonctionne pas?

Merci

+2

Puis-je vous recommander de répondre à certaines de vos questions? Il favorise la communauté et les gens seront plus enclins à vous aider. –

Répondre

1

Je pense que vous devez personnaliser le menu et menuitems séparément. Un MenuItem est un HeaderedContentControl, et sa propriété Header n'est pas un TextBlock, mais un object, donc il ne serait pas affecté par un style pour TextBlock.

Vous pouvez également essayer de modifier ce style pour cibler Control au lieu de TextBlock. (Le contrôle est où Foreground et Background sont définis.) Je ne peux pas dire avec certitude que cela fonctionnera, mais si c'est le cas, tous les contrôles (TextBlocks, MenuItems, Buttons ...) auront ces arrière-plans et premier plan couleurs. En outre, vous pouvez envisager d'utiliser BasedOn afin de pouvoir "hériter" des styles. Si ce n'est pas le cas, les styles définis plus haut dans la hiérarchie n'affectent pas les contrôles ayant un style défini plus bas dans la hiérarchie. Fondamentalement, les plus basses masquent les plus hautes, sauf si vous avez utilisé BasedOn. Utilisez-le de cette façon:

BasedOn="{StaticResource {x:Type <your type here>}}" 
+0

oui .. et puisque sa propriété 'Header' est un' object', vous pouvez aussi essayer 'HeaderTemplate' pour inclure' TextBlock' – mg007