Если вы посмотрите на шаблон для выпадающего списка, в нем будет скрываться небольшая проблема в виде значения, установленного в шаблоне переключателя.
Щелкните правой кнопкой мыши на комбинированном списке и используйте свойства> Разное для извлечения.шаблон.Посмотрите там на границу с именем "templateroot":
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Border x:Name="templateRoot"
BorderBrush="#FFACACAC" BorderThickness="{TemplateBinding BorderThickness}" SnapsToDevicePixels="True">
<Border.Background>
Вам нужно добавить xmlns: xmlns: Themes = "clr-namespace: Microsoft.Windows.Themes; assembly = PresentationFramework.Aero2"Измените этот BorderBrush так, чтобы он также связывался с Templatedparent
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Border x:Name="templateRoot"
BorderBrush="{TemplateBinding BorderBrush}"
. Затем вы можете увидеть, как он меняется.Здесь я присвоил ему значение по умолчанию зеленого цвета, поэтому очевидно, что изменения что-то делают:
<ComboBox.Style>
<Style TargetType="{x:Type ComboBox}">
<Setter Property="BorderBrush" Value="Green" />
<Setter Property="BorderThickness" Value="2" />
<Style.Triggers>
<DataTrigger Binding="{Binding HasItems, RelativeSource={RelativeSource Self}}" Value="false">
<Setter Property="BorderBrush" Value="Red" />
</DataTrigger>
</Style.Triggers>
</Style>
В качестве альтернативы вы можете использовать:
<DataTrigger Binding="{Binding ItemsSource.Count, RelativeSource={RelativeSource Self}}" Value="0">
<Setter Property="BorderBrush" Value="Red" />
</DataTrigger>
или
<Trigger Property="HasItems" Value="false">
<Setter Property="BorderBrush" Value="Red" />
</Trigger>
Выше тестируется на Windows 10.