WPF DataTrigger 在 ComboBox 上不起作用?

WPF DataTrigger not working On ComboBox?

我有以下纯XAML:

<DockPanel>
    <ComboBox Name="combo" Height="24" Width="60">
        <Border Background="Gray" Padding="20,10">
            <Border.Style>
                <Style TargetType="Border">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding ElementName=combo, Path=IsDropDownOpen}" Value="True">
                            <Setter Property="Background" Value="Red"></Setter>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </Border.Style>
        </Border>
    </ComboBox>
    <TextBlock Text="{Binding ElementName=combo, Path=IsDropDownOpen}"></TextBlock>
</DockPanel>

我希望数据触发器在打开组合框后立即将 border 对象的背景颜色更改为 red,但没有任何反应。

由于您直接在 ComboBox 上设置了背景 属性,触发器不会覆盖该值。

解释此行为 on MSDN

您必须在样式中设置它,而不是像这样:

<Border Padding="20,10">
    <Border.Style>
        <Style TargetType="Border">
            <Setter Property="Background" Value="Gray" />

            <Style.Triggers>
                <DataTrigger Binding="{Binding ElementName=combo, Path=IsDropDownOpen}" Value="True">
                    <Setter Property="Background" Value="Red"></Setter>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Border.Style>
</Border>