2

我有一个绑定到数据集的组合框,然后当它在数据中遇到“-”时使用数据触发器插入分隔符(本问题中的示例)

菜单的背景具有自定义颜色,使用资源字典设置。这种情况下的颜色是#FFF8F4C5

如果我向非数据绑定的简单组合框添加分隔符,它会正确显示。但是当使用数据触发器添加它时,它看起来不像菜单的其余部分,如下所示(它有一个白色背景)。

分隔符上的白色背景

如果我设置分隔符的背景,它实际上会将较暗的线更改为任何颜色。我似乎找不到如何更改白色区域以匹配与菜单相同的颜色。

4

2 回答 2

2

在 ControlTemplate 中,将分隔符包含在边框中,背景绑定到父 ComboBoxItem 的背景。像这样的东西:

<ControlTemplate TargetType="{x:Type ComboBoxItem}">
    <Border Background="{TemplateBinding Background}">
        <Separator HorizontalAlignment="Stretch" IsEnabled="False"/>
    </Border>
</ControlTemplate>
于 2010-11-24T15:06:12.087 回答
1

使用分隔符样式:

<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"/>

应该这样做

于 2010-11-24T15:10:02.663 回答