Cambio de color de fondo de un separador en el cuadro combinado enlazado a datos de WPF
Pregunta
Tengo un cuadro combinado que está unido a un conjunto de datos que a continuación, utiliza un DataTrigger para insertar un separador que se encuentra un '-' en los datos (ejemplo disable-separador-selección-en-caja-combo-en-WPF-enlazado a datos en esta pregunta) .
El fondo del menú tiene un color personalizado, ajuste mediante el uso de un diccionario de recursos. El color en este caso es # FFF8F4C5
Si añado un separador a un cuadro combinado no enlace de datos simple, aparece correctamente. Sin embargo, al agregar que el uso de la DataTrigger, no se ve como el resto del menú, como se puede ver a continuación (que tiene un fondo blanco).
Si fijo el fondo del separador, que en realidad cambia la línea más oscura a cualquier color. Parece que no puedo encontrar la manera de cambiar el área blanca para que coincida con el mismo color que el menú.
Solución
En el ControlTemplate, encierran el separador en una frontera con el fondo ligado a la matriz del fondo de ComboBoxItem. Algo como esto:
<ControlTemplate TargetType="{x:Type ComboBoxItem}">
<Border Background="{TemplateBinding Background}">
<Separator HorizontalAlignment="Stretch" IsEnabled="False"/>
</Border>
</ControlTemplate>
Otros consejos
utilizar un separador de estilo:
<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>
y utilizar de esta manera
<ComboBox Background="#FFD2D2B5">
<ListBoxItem Content="item1"/>
<ListBoxItem Content="item2"/>
<Separator Style="{DynamicResource SeparatorStyle1}"/>
<ListBoxItem Content="item3"/>
Eso debería hacerlo