以ComboBox样式覆盖ComboBoxItem的样式

时间:2014-08-19 02:36:16

标签: silverlight combobox styles

我有一个Silverlight项目,我想自定义ComboBox控件的外观,所以我添加了一个ResourceDictionary.xaml文件,覆盖了ComboBox的默认样式,将这个新样式应用到ComboBox,它工作正常。

  <Style TargetType="ComboBox" x:Key="CommonComboBoxStyle">
     <Setter Property = "xxx" Value="XXX" />
     ....
  </Style>

很快我意识到我还需要自定义ComboBoxItem的外观,我想在选择/删除项目时更改其背景颜色,所以我覆盖了它的默认样式:

  <Style x:Key="FilterDownComboBoxItemContainerStyle" TargetType="ComboBoxItem">
     .....
     <Rectangle x:Name="fillColor" Fill="#FF0054A6" IsHitTestVisible="False" Opacity="0" RadiusY="0" RadiusX="0"/>
     <Rectangle x:Name="fillColor2" Fill="#FF0054A6" IsHitTestVisible="False" Opacity="0" RadiusY="0" RadiusX="0"/>
  </Style>

这是问题,我想把FilterDownComboBoxItemContainerStyle放在CommonComboBoxStyle中,所以我只需要将CommonComboBoxStyle应用到我想要的ComboBoxes,不需要将FilterDownComboBoxItemContainerStyle分别应用到每个ComboBoxItem,有没有办法在ComboBox中设置ComboBoxItem的样式风格?

1 个答案:

答案 0 :(得分:1)

  

有没有办法在ComboBox样式中设置ComboBoxItem的样式?

是的,您可以使用ComboBox.ItemContainerStyle

<Style TargetType="ComboBox" x:Key="CommonComboBoxStyle">
    <Setter Property="ItemContainerStyle" Value="{StaticResource FilterDownComboBoxItemContainerStyle}" />
</Style>