DataTrigger not firing
Asked Answered
H

1

17

I have the following 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>

Now - the 2 checkboxes link properly - checking one will check the other - but the datatrigger is not firing at all.

What am I doing wrong?

Heterophyte answered 28/10, 2009 at 3:14 Comment(0)
S
59

The issue here is Property Value Precedence.

You are currently setting the Background to blue directly on the DockPanel. This explicit property will override any value set by the trigger.

Instead, you must set the original "Background" as a setter in the style.

<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>
Savoy answered 28/10, 2009 at 10:0 Comment(3)
Thanks! - It's always funny just that one little oversight that makes everything not work.Heterophyte
Thanks, I went through 10 SO threads and you had the answer I needed :).Recompense
@Andrew Shepherd You, sir, are a legend!Kobylak

© 2022 - 2024 — McMap. All rights reserved.