数据触发器未触发

17

我有以下的XAML代码:

    <DockPanel>
    <DockPanel>
        <CheckBox IsChecked="{Binding Path=Test}" />
        <CheckBox IsChecked="{Binding Path=Test}" />
    </DockPanel>
    <DockPanel DockPanel.Dock="Left" Width="10" Background="Blue">
        <DockPanel.Style>
            <Style>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding Path=Test}" Value="True">
                        <Setter Property="DockPanel.Background" Value="Yellow" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </DockPanel.Style>
    </DockPanel>
</DockPanel>

现在 - 这两个复选框链接正确 - 选中一个将会选中另一个 - 但数据触发器根本没有触发。

我做错了什么?

1个回答

58
这里的问题是属性值优先级
您目前直接在DockPanel上设置背景为蓝色。这个显式属性将覆盖触发器设置的任何值。
相反,您必须在样式中将原始的“Background”设置为setter。
<DockPanel DockPanel.Dock="Left" Width="10">
    <DockPanel.Style>
        <Style>  
            <Setter Property="DockPanel.Background" Value="Blue" /> 
            <Style.Triggers>                    
                <DataTrigger Binding="{Binding Path=Test}" Value="True">                        
                    <Setter Property="DockPanel.Background" Value="Yellow" />                       
                </DataTrigger>
            </Style.Triggers>            
        </Style>        
    </DockPanel.Style>    
</DockPanel></DockPanel>

1
谢谢!总是有那么一个小疏忽,让一切都不起作用,这真是太有趣了。 - John
谢谢,我看了10个SO线程,你提供了我需要的答案 :)。 - Tomáš Kafka
@Andrew Shepherd 您,先生,是一个传奇! - TuanDT

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接