15

私は次の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 つのチェックボックスが適切にリンクされます。一方をチェックすると、もう一方がチェックされますが、データトリガーはまったく起動しません。

私は何を間違っていますか?

4

1 に答える 1

51

ここでの問題は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>
于 2009-10-28T10:00:17.563 に答える