c# - WPF 分隔符背景颜色保持灰色
问题描述
我有一个带有分隔符的 WPF 菜单,我希望它是黑色和 1 像素宽。但是,分隔符似乎有一个内置的 30 像素宽的缓冲区空间,我无法更改其颜色。在下面的示例中,我将分隔符设置为 50 像素宽——您可以看到前 30 像素没有反映正确的背景颜色。很烦人!我错过了什么?
这是 XAML:
<Menu DockPanel.Dock="Top" FontSize="45" Height="62" Name="Menu">
<MenuItem Header="_Home" Name="HomeMenuItem" Click="HomeMenuItem_Click" Padding="10,0,10,0"></MenuItem>
<Separator Width="50" Background="Black" Foreground="Black" BorderThickness="0" Margin="0" Padding="0"></Separator>
<MenuItem Header="_Print" Name="PrintMenuItem" Click="PrintMenuItem_Click" Padding="10,0,10,0"></MenuItem>
...
解决方案
结果是菜单的 ControlTemplate 自动包含分隔符的边距。感谢Rowbear,我现在明白 ControlTemplate 会覆盖样式。然后解决方案是将自定义模板添加到 Application.Resources。(我确信在 Windows.Resources 等中这样做会很好)
<Style x:Key="SeparatorStyle" TargetType="{x:Type Separator}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Separator}">
<Border Padding="0" Margin="0" BorderThickness="0" Background="#40000000"></Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
然后在主 XAML 窗口中引用自定义 ControlTemplate,如下所示:
<Separator Width="1" Style="{StaticResource SeparatorStyle}"></Separator>
推荐阅读
- java - java.lang.IndexOutOfBoundsException:索引:2,大小:1 在 java.util.ArrayList.get(ArrayList.java:437)
- amazon-dynamodb-local - DynamoDB NoSQL Workbench 测试表不可见
- python - 我在hackerrank 中处理公平配给问题的方法在23 个测试用例中得到了11 个失败的测试用例。出了什么问题?
- python - 特定字符之间的 Python 正则表达式捕获
- python - 更改帧时 Tkinter 中的额外空间
- reactjs - 使用 react-testing-library 设置值并单击提交按钮
- javascript - 谷歌支付 UPI 在 asp.net 中的集成
- pandas - 熊猫按组划分年龄
- power-bi-report-server - 如何在公共站点中发布 power bi 报表服务器仪表板?
- python - 如何在 kivy 中创建 60 秒倒数计时器