如何将另一个DependencyProperty绑定到CheckBox的IsChecked属性?

时间:2010-05-26 19:12:34

标签: wpf data-binding checkbox triggers dependency-properties

这是我想要完成的一个例子:

<Window x:Class="CheckBoxBinding.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">

<StackPanel>
    <CheckBox Name="myCheckBox">this</CheckBox>    
    <Grid>
        <Grid.Resources>
            <Style TargetType="ListBox">
                <Style.Triggers>
                    <Trigger Property="{Binding ElementName=myCheckBox, Path=IsChecked}" Value="True">
                        <Setter Property="Background" Value="Red" />
                    </Trigger>
                </Style.Triggers>
            </Style>
        </Grid.Resources>
        <ListBox>
            <ListBoxItem>item</ListBoxItem>
            <ListBoxItem>another</ListBoxItem>
        </ListBox>
    </Grid>
</StackPanel>
</Window>

当我尝试运行它时,我得到了这个XamlParseException:

  

无法在“触发器”类型的“属性”属性上设置“绑定”。 '绑定'只能在DependencyObject的DependencyProperty上设置。

那么如何将ListBox上的属性绑定到CheckBox的IsChecked属性?

1 个答案:

答案 0 :(得分:17)

尝试使用DataTrigger。用以下内容替换你的Grid.Resources并且它可以工作:

    <Grid.Resources>
        <Style TargetType="ListBox">
            <Style.Triggers>
                <DataTrigger Binding="{Binding ElementName=myCheckBox, Path=IsChecked}" Value="True">
                    <Setter Property="Background" Value="Red" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Grid.Resources>