Изменение цвета фона сепаратора в поле Связанные данные WPF
Вопрос
У меня есть Combobox, который связан с набором набора данных, который затем использует DataTrigger для вставки сепаратора, когда он сталкивается с «-» в данных (пример В этом вопросе).
Фон меню имеет пользовательский цвет, установленный с помощью словаря ресурсов. Цвет в этом случае - # FFF8F4C5
Если я добавлю сепаратор на неисправную комбинезонную коробку, оно появляется правильно. Но при добавлении его с помощью DataTrigger он не похож на остальное меню, как вы можете видеть ниже (у него белый фон).
Если я установил фон сепаратора, он фактически меняет темную линию на любой цвет. Кажется, я не могу найти, как изменить белую область, чтобы соответствовать тому же цвету, что и меню.
Решение
В ControlTemplate приложите сепаратор в границе с предпосылкой, связанной с предпосылкой родительской комбинации. Что-то вроде этого:
<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"/>
Это должно сделать это