Domanda

Ho una combobox che è associato a un insieme di dati che poi utilizza un DataTrigger per inserire un separatore quando incontra un '-' nei dati (ad esempio in questa domanda) .

Lo sfondo del menu ha colore personalizzato, impostare utilizzando un dizionario risorse. Il colore in questo caso è # FFF8F4C5

Se posso aggiungere un separatore per una casella combinata non databound semplice, sembra corretto. Ma quando si aggiunge utilizzando il DataTrigger, non apparire come il resto del menu, come si può vedere qui sotto (che ha uno sfondo bianco).

sfondo bianco sul separatore

Se ho impostato lo sfondo del separatore, in realtà cambia la linea più scura di qualsiasi colore. Io non riesco a trovare il modo di cambiare l'area bianca per abbinare lo stesso colore come il menu.

È stato utile?

Soluzione

Nel ControlTemplate, racchiudere il separatore in un confine con sfondo destinata a al genitore Sfondo del ComboBoxItem. Qualcosa di simile a questo:

<ControlTemplate TargetType="{x:Type ComboBoxItem}">
    <Border Background="{TemplateBinding Background}">
        <Separator HorizontalAlignment="Stretch" IsEnabled="False"/>
    </Border>
</ControlTemplate>

Altri suggerimenti

utilizzare uno stile di separazione:

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

e utilizzarlo come questo

<ComboBox Background="#FFD2D2B5">
  <ListBoxItem Content="item1"/>
  <ListBoxItem Content="item2"/>
  <Separator Style="{DynamicResource SeparatorStyle1}"/>
  <ListBoxItem Content="item3"/>

Che dovrebbe farlo

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top