2010-03-12 104 views
1

我有以下WPF菜單項樣式

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

的應用程序資源所以在我的應用程序中的所有文本塊應該承擔這些顏色。

但是,菜單及其在我的主窗口中包含MenuItems不採取這些顏色?

我必須做的XAML

爲它承擔這些顏色,有一個原因是設置針對文本塊不工作風格?

謝謝

+2

我可以推薦在回答中標記一些問題嗎?它促進社區,人們會更傾向於幫助你。 –

回答

1

我認爲你必須單獨設計菜單和菜單項。 A MenuItemHeaderedContentControl,其標題屬性不是TextBlock,而是object,因此它不受TextBlock樣式的影響。

您也可以嘗試更改該樣式,以將目標設爲Control而不是TextBlock。 (控制是ForegroundBackground被定義的地方)。我不能肯定地說它會起作用,但是如果這樣做,它會使每個Control(TextBlocks,MenuItems,Buttons ...)具有那些背景和前景顏色。

此外,您可能會考慮使用BasedOn,以便您可以「繼承」樣式。如果您不這樣做,那麼定義在層次結構更上方的樣式不會影響具有在層次結構中定義得較低的樣式的控件。基本上,較低者掩蓋較高者,除非您使用BasedOn。以這種方式使用它:

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

是的..因爲它的'Header'屬性是一個'object',所以你也可以嘗試'HeaderTemplate'來包含'TextBlock' – mg007