CheckBox不响应取消选中

时间:2018-08-06 09:37:57

标签: c# wpf checkbox

我有3个CheckBoxes,当另一个复选框被选中/取消选中时,我想禁用/启用其中两个。第一步有效(如果我选中checkBoxcaja,则其他两个复选框均处于禁用状态,但是当我取消选中checkBoxcaja时,其他两个复选框将不会返回其原始的启用状态。

我在做什么错了?

我是WPF的新手。

这是代码:

private void checkBoxcaja_Checked(object sender, RoutedEventArgs e)
{
    if (checkBoxcaja.IsChecked == true)
    {
        checkBoxbanderola.IsEnabled = false;
        checkBoxletra.IsEnabled = false;
    }
    else if (checkBoxcaja.IsChecked == false)
    {
        checkBoxbanderola.IsEnabled = true;
        checkBoxletra.IsEnabled = true;
    }
}

预先感谢

2 个答案:

答案 0 :(得分:2)

我在这里猜测,是说您将此事件与Checked事件相关。

好吧,仅当选中复选框时才会触发。取消选中{em> em 会触发一个Unchecked事件,因此您也需要连接到该事件。您一半的方法属于其中。

private void checkBoxcaja_Checked(object sender, RoutedEventArgs e)
{
    checkBoxbanderola.IsEnabled = false;
    checkBoxletra.IsEnabled = false;
}

private void checkBoxcaja_Unchecked(object sender, RoutedEventArgs e)
{
    checkBoxbanderola.IsEnabled = true;
    checkBoxletra.IsEnabled = true;
}

别忘了将它们连接起来。或者,you can use the same event handler for both.

答案 1 :(得分:0)

您还可以使用Datatriggers在XAML中完全做到这一点:

<CheckBox x:Name="CBOne" Grid.Column="1" Grid.Row="3" Content="One" HorizontalAlignment="Center" VerticalAlignment="Center"></CheckBox>
<CheckBox x:Name="CBTwo" Grid.Column="2" Grid.Row="3" Content="Two" HorizontalAlignment="Left" VerticalAlignment="Center">
        <CheckBox.Style>
            <Style TargetType="CheckBox">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding ElementName=CBOne, Path=IsChecked}" Value="True">
                        <Setter Property="IsEnabled" Value="False"></Setter>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding ElementName=CBOne, Path=IsChecked}" Value="False">
                        <Setter Property="IsEnabled" Value="True"></Setter>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </CheckBox.Style>
</CheckBox>
<CheckBox x:Name="CBThree" Grid.Column="2" Grid.Row="3" Content="Three" HorizontalAlignment="Right" VerticalAlignment="Center">
        <CheckBox.Style>
            <Style TargetType="CheckBox">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding ElementName=CBOne, Path=IsChecked}" Value="True">
                        <Setter Property="IsEnabled" Value="False"></Setter>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding ElementName=CBOne, Path=IsChecked}" Value="False">
                        <Setter Property="IsEnabled" Value="True"></Setter>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </CheckBox.Style>
</CheckBox>