C# 同时检查多个对象的布尔属性

C# 同时检查多个对象的布尔属性,c#,wpf,C#,Wpf,我的GUI应用程序上有多个复选框,可以为相同类型的每个对象启用自动更新。因此,如果选中该复选框,isautoupdate属性将设置为true,否则将设置为false。我有一个按钮,需要启用/禁用所有复选框上的自动更新。如何检查所有对象的isautoupdate属性是否设置为true或false 我当前的实现是使用foreach循环,循环遍历每个对象并检查isautoupdate是否设置为true或false,但我得到了一种切换效果,如果选中一些复选框,它将取消选中它们,反之亦然 in.cs fo

我的GUI应用程序上有多个复选框,可以为相同类型的每个对象启用自动更新。因此,如果选中该复选框,isautoupdate属性将设置为true,否则将设置为false。我有一个按钮,需要启用/禁用所有复选框上的自动更新。如何检查所有对象的isautoupdate属性是否设置为true或false

我当前的实现是使用foreach循环,循环遍历每个对象并检查isautoupdate是否设置为true或false,但我得到了一种切换效果,如果选中一些复选框,它将取消选中它们,反之亦然

in.cs

foreach (MxL_GUI_ChannelSettingAndStatusItem item in theGUIManager.theDevice.channelCollection)
{
    if (!item.IsAutoUpdated)
    {
        item.IsAutoUpdated = true;
    }
    else
    {
        item.IsAutoUpdated = false;
    }
}

如果您不想让从属复选框切换,那么不要编写切换它们的代码。相反,请选中主复选框的IsChecked属性,并将该值应用于项目的所有IsAutoUpdate属性:

foreach (MxL_GUI_ChannelSettingAndStatusItem item in ...)
{
    item.IsAutoUpdated = masterCheckbox.IsChecked.Value;
}

如果您不想让从属复选框切换,那么不要编写切换它们的代码。相反,请选中主复选框的IsChecked属性,并将该值应用于项目的所有IsAutoUpdate属性:

foreach (MxL_GUI_ChannelSettingAndStatusItem item in ...)
{
    item.IsAutoUpdated = masterCheckbox.IsChecked.Value;
}

我不确定我是否完全理解你的要求。如果要检测所有项目是否设置为true或false,请使用:

var items = theGUIManager.theDevice.channelCollection;

// If you need to know if for all items IsAutoUpdated = true
bool allChecked = items.All(item => item.IsAutoUpdated);

// If you need to know if they're all false
bool noneChecked = !items.Any(item => item.IsAutoUpdated);
然后更新您的项目,例如:

foreach(var item in items) { item.IsAutoUpdated = !allChecked; }

我不确定我是否完全理解你的要求。如果要检测所有项目是否设置为true或false,请使用:

var items = theGUIManager.theDevice.channelCollection;

// If you need to know if for all items IsAutoUpdated = true
bool allChecked = items.All(item => item.IsAutoUpdated);

// If you need to know if they're all false
bool noneChecked = !items.Any(item => item.IsAutoUpdated);
然后更新您的项目,例如:

foreach(var item in items) { item.IsAutoUpdated = !allChecked; }

谢谢你的解决方案,菲尔。如果在代码中没有使用noneChecked,为什么要声明noneChecked?只是因为您询问如何检查所有对象是否都设置为true或false。谢谢您的解决方案。如果在代码中没有使用noneChecked,为什么要声明noneChecked?只是因为您询问如何检查所有对象是否都设置为true或false。谢谢Jon,我最终使用了一个主复选框而不是按钮,您的解决方案非常有效谢谢!谢谢Jon,我最后用了一个主复选框而不是按钮,你的解决方案很有效,谢谢!