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,但我无法找到它在哪里。我认为必须有某种方法来拦截这种魔法,但由于我无法找到魔法发生的位置,我无法弄清楚如何拦截它。
任何想法?
大卫·穆林