WPFデータバインドされたコンボボックスのセパレーターの背景色の変更

StackOverflow https://stackoverflow.com/questions/4267822

  •  28-09-2019
  •  | 
  •  

質問

データセットにバインドされているコンボボックスがあり、その後、DataTriggerを使用して、データに「 - 」に遭遇したときにセパレータを挿入します(例の例 この質問で).

メニューの背景には、リソース辞書を使用して設定されたカスタム色があります。この場合の色は#fff8f4c5です

分離器を非DataBoundの単純なコンボボックスに追加すると、正しく表示されます。ただし、DataTriggerを使用して追加する場合、以下に表示できるように、メニューの残りの部分のようには見えません(白い背景があります)。

white background on separator

セパレーターの背景を設定すると、実際に暗い線がどんな色に変わります。メニューと同じ色に合わせて白い領域を変更する方法を見つけることができないようです。

役に立ちましたか?

解決

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

それはそれをするはずです

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top