Из стиля ComboBox по умолчанию существует Граница с именем Фон занимает два столбца, а его MinWidth установлен как ComboBoxThemeMinWidth, равный 64px, поэтому MinWidth ComboBox будет быть 64px. Если вы хотите установить его ширину 50, вы можете установить MinWidth of Border равным 50 или удалить свойство MinWidth, а затем применить новый стиль. Например:
.xaml:
<Style x:Key="ComboBoxStyle1" TargetType="ComboBox">
......
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ComboBox">
<Grid x:Name="LayoutRoot">
......
<Border x:Name="Background" MinWidth="50" Background="{TemplateBinding Background}" BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}" CornerRadius="{TemplateBinding CornerRadius}" Grid.ColumnSpan="2" Grid.Column="0" Control.IsTemplateFocusTarget="True" Grid.Row="1"/>
......
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
.cs:
ComboBox ComboBox = new ComboBox();
ComboBox.Width = 50;
ComboBox.Height = 27;
ComboBox.Style = (Style)this.Resources["ComboBoxStyle1"];
О полной версии ComboBoxStyle1 можно сослаться на этот пример .