复选框事件未选中时不触发

本文关键字:事件 复选框 | 更新日期: 2023-09-27 18:13:16

这里的问题很简单。代码也很简单。

我有一个复选框和一个组合框。

基本上,当复选框被选中或未选中时,组合框的选中项应该改变。现在情况不太好。

当它从未选中变为选中时,它可以工作,但是当我取消选中它时,组合框的值保持不变。

复选框代码:

private void linked_Checked(object sender, RoutedEventArgs e)
    {
        if (linked.IsChecked == true)
        {
            Chained.SelectedIndex = 0;
        }
        if (linked.IsChecked == false)
        {
            Chained.SelectedIndex = 1;
        }
    }

组合框代码:

<ComboBox x:Name="Chained"  Text="{Binding Chained, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Margin="128,69,132,-92" Grid.Row="15" Visibility="Visible" SelectionChanged="Chained_SelectionChanged" >
                    <ComboBoxItem Content="True"/>
                    <ComboBoxItem Content="False"/>
                </ComboBox>

这应该是非常直接的,对吗?那么我错在哪里呢?如果在xaml中有这样的方法我也洗耳恭听

复选框事件未选中时不触发

放到未检查事件中,

private void linked_UnChecked(object sender, RoutedEventArgs e)
    { 
        if (linked.IsChecked == false)
        {
            Chained.SelectedIndex = 1;
        }
    }

原因是当被检查的事件被触发时,状态还没有改变,这发生在设置新值之前。这意味着当事件被触发时,您仍然获得旧值。所以我总是发现checkstatechange事件要好得多。因为当检查状态发生变化时将触发此事件。然后你可以这样说。

  private void checkBox1_CheckStateChanged(object sender, EventArgs e)
            {
               if (linked.CheckState == CheckState.Checked){
                Chained.SelectedIndex = 0;
               }

            }