Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF数据触发器在ComboBox上不工作?_Wpf_Combobox_Datatrigger - Fatal编程技术网

WPF数据触发器在ComboBox上不工作?

WPF数据触发器在ComboBox上不工作?,wpf,combobox,datatrigger,Wpf,Combobox,Datatrigger,我得到了以下纯XAML: <DockPanel> <ComboBox Name="combo" Height="24" Width="60"> <Border Background="Gray" Padding="20,10"> <Border.Style> <Style TargetType="Border"> &l

我得到了以下纯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>


我希望只要打开组合框,datatrigger就会将
边框
对象的背景颜色更改为
红色
,但不会发生任何变化。

因为您直接在
组合框
上设置了背景属性,所以触发器不会覆盖该值

对这种行为进行了解释

您必须将其设置为样式,如下所示:

<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>