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

时间:2014-07-16 13:49:37

标签: c# xaml checkbox combobox

这里简单的问题。 非常简单的代码。

我有一个复选框,我也有一个组合框。

基本上,只要选中复选框或未选中复选框,组合框的所选项目就会发生变化。现在情况不太好。

当它从uncheked转到checked时有效,但是当我取消选中它时,组合框值保持不变。

复选框代码:

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

        if (linked.IsChecked == false)
        {
            Chained.SelectedIndex = 1;
        }
    }

Combobox代码:

<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中有一种方法可以做到这一点,那么我也是所有的耳朵。

2 个答案:

答案 0 :(得分:1)

将其置于未经检查的事件

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

答案 1 :(得分:0)

原因是当触发checked事件时,状态尚未更改,并且在设置新值之前发生这种情况。这意味着当事件被触发时,您仍然可以获得旧值。所以我总能找到更好的CheckStateChanged事件。因为检查状态更改时会触发此事件。所以你可以说这样的话。

  private void checkBox1_CheckStateChanged(object sender, EventArgs e)
            {

               if (linked.CheckState == CheckState.Checked){

                Chained.SelectedIndex = 0;
               }


            }