我想更改MenuItems下拉菜单的背景颜色,并且发现我可以做到,如果我更改ControlTemplate“ x:Static MenuItem.TopLevelHeaderTemplateKey”。
我复制了Here中的controlTemplate
并编辑所有颜色,但是现在它说“ StaticResource MenuScrollViewer”是未知的。我也从同一站点添加了此资源,但是MenuScrollView缺少许多其他资源。
那么如何编辑此模板,以便可以更改“ MenuItem.TopLevelHeaderTemplateKey”的所有颜色?
答案 0 :(得分:0)
模板在您链接的页面中。或至少是英文版本。 这是菜单滚动按钮:
<Style x:Key="MenuScrollButton" BasedOn="{x:Null}" TargetType="{x:Type RepeatButton}">
<Setter Property="ClickMode" Value="Hover"/>
<Setter Property="MinWidth" Value="0"/>
<Setter Property="MinHeight" Value="0"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type RepeatButton}">
<DockPanel Background="Transparent" SnapsToDevicePixels="true">
<Rectangle x:Name="R1" DockPanel.Dock="Right" Fill="Transparent" Width="1"/>
<Rectangle x:Name="B1" DockPanel.Dock="Bottom" Fill="Transparent" Height="1"/>
<Rectangle x:Name="L1" DockPanel.Dock="Left" Fill="Transparent" Width="1"/>
<Rectangle x:Name="T1" DockPanel.Dock="Top" Fill="Transparent" Height="1"/>
<ContentPresenter x:Name="ContentContainer" HorizontalAlignment="Center" Margin="2,2,2,2" VerticalAlignment="Center"/>
</DockPanel>
<ControlTemplate.Triggers>
<Trigger Property="IsPressed" Value="true">
<Setter Property="Fill" TargetName="R1" Value="{DynamicResource {x:Static SystemColors.ControlLightLightBrushKey}}"/>
<Setter Property="Fill" TargetName="B1" Value="{DynamicResource {x:Static SystemColors.ControlLightLightBrushKey}}"/>
<Setter Property="Fill" TargetName="L1" Value="{DynamicResource {x:Static SystemColors.ControlDarkDarkBrushKey}}"/>
<Setter Property="Fill" TargetName="T1" Value="{DynamicResource {x:Static SystemColors.ControlDarkDarkBrushKey}}"/>
<Setter Property="Margin" TargetName="ContentContainer" Value="3,3,1,1"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
有关整个提取的模板,请参见:
答案 1 :(得分:0)
您将在PresentationFramework.*
的{{1}}程序集中找到默认模板以及所有引用的资源。
下载dotPeek或使用其他.NET反编译器对其进行反编译,查看C:\Windows\Microsoft.NET\Framework64\v4.0.30319\WPF\
-> Resources
-> PresentationFramework.*.g.resources
下的BAML资源。