WPF DataTrigger无法在ComboBox上运行?

时间:2015-02-27 17:11:32

标签: wpf combobox datatrigger

我有以下纯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,但没有任何反应。

1 个答案:

答案 0 :(得分:2)

由于您已在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>