2

データセットにバインドされたコンボボックスがあり、データトリガーを使用して、データに「-」が検出されたときにセパレーターを挿入します (この質問の例)

メニューの背景には、リソース ディクショナリを使用して設定されたカスタム カラーがあります。この場合の色は #FFF8F4C5 です

データバインドされていない単純なコンボ ボックスに区切り記号を追加すると、正しく表示されます。ただし、datatrigger を使用して追加すると、以下に示すように、メニューの残りの部分とは異なります (背景が白です)。

セパレーターの白地

セパレーターの背景を設定すると、実際には暗い線がどんな色にも変わります。メニューと同じ色に一致するように白い領域を変更する方法が見つからないようです。

4

2 に答える 2

2

ControlTemplate で、Separator を Border で囲み、Background を親の ComboBoxItem の Background にバインドします。このようなもの:

<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 に答える