更改 WPF 数据绑定组合框中分隔符的背景颜色
题
我有一个绑定到数据集的组合框,然后在遇到数据中的“-”时使用数据触发器插入分隔符(例如 在这个问题中).
菜单的背景具有自定义颜色,通过使用资源字典设置。本例中的颜色是#FFF8F4C5
如果我将分隔符添加到非数据绑定简单组合框,它会正确显示。但是,当使用数据触发器添加它时,它看起来不像菜单的其余部分,如下所示(它具有白色背景)。
如果我设置分隔符的背景,它实际上会将较暗的线条更改为任何颜色。我似乎找不到如何更改白色区域以匹配与菜单相同的颜色。
解决方案
在 ControlTemplate 中,将分隔符包含在边框中,并将背景绑定到父 ComboBoxItem 的背景。像这样的东西:
<ControlTemplate TargetType="{x:Type ComboBoxItem}">
<Border Background="{TemplateBinding Background}">
<Separator HorizontalAlignment="Stretch" IsEnabled="False"/>
</Border>
</ControlTemplate>
其他提示
使用分隔符样式:
<Style x:Key="SeparatorStyle1" TargetType="{x:Type Separator}">
<Setter Property="Background" Value="{DynamicResource
{x:Static SystemColors.ControlDarkBrushKey}}"/>
<Setter Property="Margin" Value="0,2,0,2"/>
<Setter Property="Focusable" Value="false"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Separator}">
<Border Height="1" SnapsToDevicePixels="true"
Background="#FFCCD480" BorderBrush="#FF633A3A" BorderThickness="0,0,0,1"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
并像这样使用它
<ComboBox Background="#FFD2D2B5">
<ListBoxItem Content="item1"/>
<ListBoxItem Content="item2"/>
<Separator Style="{DynamicResource SeparatorStyle1}"/>
<ListBoxItem Content="item3"/>
那应该可以做到
不隶属于 StackOverflow