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).

fondo blanco en el separador

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ú.

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top