0
如果我有這樣定義的菜單:需要覆蓋默認的ContentTemplate字符串內容
<TextBlock Text="{Binding}" />
:
<Menu>
<MenuItem Header="Stuff" />
</Menu>
當這個被渲染時,ContentPresenter裏面的菜單項的,像這樣的內容結束
這意味着它繼承了TextBlock的默認樣式,這並不總是可取的。
我知道,我可以改變我的菜單項是這樣的:
<MenuItem>
<MenuItem.Header>
<TextBlock Text="Stuff" Style="{DynamiResource MyStyle}" />
</MenuItem.Header>
</MenuItem>
但是這將是一個惱人的要求。我知道我可以重寫MenuItem的默認樣式來明確設置ContentTemplate,但這意味着如果內容是一個字符串以外的東西,或者如果MenuItem的特定實例指定了一個ContentTemplate,我的默認值風格會覆蓋 - 這會很糟糕。我知道,在WPF的魔力的某個地方,有一個轉換器或東西,正在採取類型字符串的內容和創建使用TextBlock的DataTemplate,但我無法找到它在哪裏。我認爲必須有某種方法來攔截這種魔法,但由於我無法找到魔法發生的位置,我無法弄清楚如何攔截它。
任何想法?
大衛·穆林