取消选中CheckBox时如何做某事

时间:2017-07-05 06:14:13

标签: c# xaml checkbox

我希望选择所有CheckBox,在Checked时,检查所有其他CheckBoxes,在Unchecked时,取消选中其他private void all_CheckedChanged(object sender, RoutedEventArgs e) { if (all.IsChecked == true)//this is working { issue.IsChecked = true; summary.IsChecked = true; type.IsChecked = true; status.IsChecked = true; label.IsChecked = true; components.IsChecked = true; empty.IsChecked = true; reporter.IsChecked = true; requester.IsChecked = true; team.IsChecked = true; assignee.IsChecked = true; } else if (all.IsChecked == false)//this is not doing anything { issue.IsChecked = false; summary.IsChecked = false; type.IsChecked = false; //same for other checkboxes } } 。我写了这段代码:

CheckBox

当我调试它时,我看到当我检查before(:all) do User.any_instance.stub(:external_api_code) end 时事件发生,但是当我取消选中它时没有任何反应。有人,如果我做错了,请建议我怎么做。

2 个答案:

答案 0 :(得分:0)

在WPF' CheckBox中,您还没有Changed事件。您已使用Checked事件,因此您还必须指定Unchecked并将相同的处理程序附加到这两个事件。所以你的XAML代码应该是这样的:

<CheckBox Name="all" Checked="All_OnChecked" Unchecked="All_OnChecked"></CheckBox>

但我强烈建议您使用MVVM pattern来实现此目的。

答案 1 :(得分:0)

假设您已经拥有XAML文件中的复选框。

请务必将CheckedUnchecked个事件添加到XAML文件中的SelectAll复选框。

然后,填充您希望每个事件执行的操作。在您的情况下,您希望Checked事件检查所有其他复选框,并Unchecked事件执行相反的操作。

试试这个......

MainPage.xaml.cs文件

private void SelectAll_Checked(object sender, RoutedEventArgs e)
{
   issue.IsChecked = true;
   // Do the rest for all other checkboxes you want to check
}

private void SelectAll_Unchecked(object sender, RoutedEventArgs e)
{
    issue.IsChecked = false;
   // Do the rest for all other checkboxes you want to uncheck
}

MainPage.xaml文件

<CheckBox x:Name="SelectAll" Content="Select All" HorizontalAlignment="Left" Margin="107,125,0,0" VerticalAlignment="Top" 
    Checked="SelectAll_Checked" 
    Unchecked="SelectAll_Unchecked" />
<!-- Other checkboxes ... -->

此示例请查看my Gist link