Your problem comes from ButtonChrome in the ToggleButton template. Remove it from ToggleButton.
ComboBox -> ToggleButton -> ButtonChrome
Steps:
1) Open Expression Blend and edit a copy of ComboBox Style, this will give you the ComboBox + it Template and all its TemplateParts, among which the problematic ToggleButton.
2) Find the ToggleButton and Style called ComboBoxReadonlyToggleButton.
3) In "ComboBoxReadonlyToggleButton" replace Themes: ButtonChrome with Border (as shown in the 3rd block of code below).
The default template for ComboBox (simplified!):
<ControlTemplate TargetType="{x:Type ComboBox}"> <Grid x:Name="MainGrid" SnapsToDevicePixels="true"> <Popup x:Name="PART_Popup"> ..... </Popup> <ToggleButton Style="{StaticResource ComboBoxReadonlyToggleButton}"/> <ContentPresenter ... /> </Grid> </ControlTemplate>
Switch button Style + Template (Simplified!).
<Style x:Key="ComboBoxReadonlyToggleButton" TargetType="{x:Type ToggleButton}"> <Setter Property="Background" Value="Transparent"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type ToggleButton}"> <Themes:ButtonChrome x:Name="Chrome" ....> <Grid> <Path x:Name="Arrow" /> </Grid> </Themes:ButtonChrome> </ControlTemplate> </Setter.Value> </Setter> </Style>
What you need to do is to override the default ComboBox template and edit the style of the toggle button, replacing ButtonChrome with Border:
<Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type ToggleButton}"> <Border x:Name="Chrome" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" SnapsToDevicePixels="true"> <Grid> <Path x:Name="Arrow" /> </Grid> </Border> </ControlTemplate> </Setter.Value> </Setter>
source share