【问题标题】:DataTrigger not firingDataTrigger 未触发
【发布时间】:2010-12-10 17:43:20
【问题描述】:

我有以下 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>

现在 - 2 个复选框正确链接 - 检查一个将检查另一个 - 但数据触发器根本没有触发。

我做错了什么?

【问题讨论】:

    标签: .net wpf xaml datatrigger


    【解决方案1】:

    这里的问题是Property Value Precedence

    您当前直接在 DockPanel 上将背景设置为蓝色。此显式属性将覆盖触发器设置的任何值。

    相反,您必须将原始“背景”设置为样式中的设置器。

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

    【讨论】:

    • 谢谢! - 一个小小的疏忽让一切都无法正常工作,这总是很有趣。
    • 谢谢,我浏览了 10 个 SO 线程,你得到了我需要的答案 :)。
    • @Andrew Shepherd 先生,您是个传奇人物!
    猜你喜欢
    • 2010-09-10
    • 2011-09-24
    • 2013-05-12
    • 2015-10-15
    • 2012-06-12
    • 2013-03-16
    • 1970-01-01
    相关资源
    最近更新 更多