void box_Checked(object sender, RoutedEventArgs e) { //we need to get our index. int index = -1; for (int i = 0; i < RelayPrechargeCheckboxes.Count(); ++i) { if (sender == RelayPrechargeCheckboxes[i]) { index = i; } } if (index == -1) { throw new Exception(); } bool is_checked = RelayPrechargeCheckboxes[index].IsChecked.Value; BatteryWriteData.SetRelayPrechargeState(index, is_checked); if (is_checked) { RelayBtns[index].IsEnabled = true; } else if ((BatteryWriteData.GetRelayState(index) == false) && (index != 1)) //disable the button if the relay isn't currently on. { RelayBtns[index].IsEnabled = false; } }