1

I have multiple check boxes on my GUI application that enables auto update for each object of the same type. So if the checkbox is checked, the isautoupdate property is set to true else set to false. I have a button that needs to enable/disable auto update on all checkboxes. How do I go about checking if isautoupdate property of all the objects is set to true or false.

my current implementation is using a foreach loop that iterates through each object and checks if the isautoupdate is set to true or false but I get a toggle effect where if some checkboxes are checked it will uncheck them and vise versa.

in .cs

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

2 に答える 2

3

スレーブ チェックボックスを切り替えたくない場合は、それらを切り替えるコードを記述しないでください。代わりにIsChecked、マスター チェックボックスのプロパティをチェックしてIsAutoUpdated、アイテムのすべてのプロパティに値を適用します。

foreach (MxL_GUI_ChannelSettingAndStatusItem item in ...)
{
    item.IsAutoUpdated = masterCheckbox.IsChecked.Value;
}
于 2013-03-29T20:05:16.727 に答える
1

あなたの要件を正確に理解しているかどうかわかりません。すべての項目が 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; }
于 2013-03-29T20:20:10.660 に答える