【问题标题】:How to do something when a CheckBox is unchecked未选中 CheckBox 时如何做某事
【发布时间】:2017-07-05 19:50:42
【问题描述】:

我想要一个全选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 时发生了事件,但是当我取消选中它时没有任何反应。有人,请建议我如何做到这一点,以防我做错了什么。

【问题讨论】:

  • 为什么有else if (..)不然就够了呐?因为IsChecked 是一个布尔属性

标签: c# xaml checkbox


【解决方案1】:

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

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

不过,我强烈建议您为此目的使用 MVVM pattern

【讨论】:

    【解决方案2】:

    这是假设您已经在 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 获取此示例。

    【讨论】:

    • 我没有设置它。但是感谢@S.Akbari 在工作中的回答。
    • @komalThawani 不用担心。在我有机会完成我的回答之前,他(或她)指出了这一点。如果他或她的回答有效,那就太好了! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-03
    • 2016-08-23
    • 1970-01-01
    • 2012-07-05
    • 2012-01-23
    • 1970-01-01
    相关资源
    最近更新 更多