我有以下
的应用程序资源<Style TargetType="{x:Type TextBlock}">
<Setter Property="Background" Value="{DynamicResource windowTextBackColor}"/>
<Setter Property="Foreground" Value="{DynamicResource windowsTextForeColor}"/>
</Style>
因此,我的应用程序中的所有文本块都应该采用这些颜色。
但是,我的主窗口上的菜单及其包含的MenuItems不会采用这些颜色吗?
我必须做XAML
让它假设那些颜色,是否有理由设置一个目标文本块的样式不起作用?
由于
答案 0 :(得分:1)
我认为你必须分别设置菜单和菜单项的样式。 MenuItem
是HeaderedContentControl
,其Header属性不是TextBlock
,而是object
,因此它不受TextBlock样式的影响。
您也可以尝试将该样式更改为定位Control
而不是TextBlock。 (控制是定义Foreground
和Background
的地方。)我不能肯定它会起作用,但如果确实如此,它将会生成每个控件(TextBlocks,MenuItems,Buttons。 ..)有那些背景和前景色。
此外,您可以考虑使用BasedOn
,以便“继承”样式。如果不这样做,则在层次结构的更远处定义的样式将不会影响在层次结构中定义较低样式的控件。基本上,较低的屏蔽较高的屏蔽,除非您使用BasedOn
。以这种方式使用它:
BasedOn="{StaticResource {x:Type <your type here>}}"