7 Stimmen

Wie kann ich eine andere DependencyProperty an die IsChecked-Eigenschaft einer CheckBox binden?

Hier ist ein Beispiel für das, was ich zu erreichen versuche:

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

Wenn ich versuche, es auszuführen, erhalte ich diese XamlParseException:

Eine "Bindung" kann nicht auf die Eigenschaft "Property" vom Typ "Trigger" gesetzt werden. Ein 'Binding' kann nur auf eine DependencyProperty eines DependencyObjects gesetzt werden.

Wie kann ich also eine Eigenschaft der ListBox mit der IsChecked-Eigenschaft einer CheckBox verbinden?

21voto

Ben Collier Punkte 2582

Versuchen Sie, einen DataTrigger zu verwenden. Ersetzen Sie Ihre Grid.Resources durch die folgenden und es funktioniert:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X