У меня есть это в моей программе uwp:
Я хочу это так:
- Если родитель флажок установлен, все дети тоже.
- Если флажок родительского элемента снят, все дети тоже.
- Если флажки всех детей установлены, родитель также будет проверять.
- Если ни один из дочерних флажков не отмечен, то родительский флажок проверяться не будет.
Мой текущий код может обрабатывать первые три, однако, когда я отменяю проверку одного из дочерних элементов, непроверенная операция для родителя активируется, и это снимает флажок со всех дочерних элементов.
Флажки ограничены булевыми элементами с одинаковыми именами.
Проверяемый код:
private void IsChecked(object sender, RoutedEventArgs e)
{
CheckBox checkBox = sender as CheckBox;
if (checkBox.Name == "chkWeekday")
{
Monday = true;
Tuesday = true;
Wednesday = true;
Thursday = true;
Friday = true;
}
else
{
switch (checkBox.Name) // Handles data not updating yet
{
case "chkMonday":
Monday = true;
break;
case "chkTuesday":
Tuesday = true;
break;
case "chkWednesday":
Wednesday = true;
break;
case "chkThursday":
Thursday = true;
break;
case "chkFriday":
Friday = true;
break;
}
if (Monday && Tuesday && Wednesday && Thursday && Friday)
{
Weekday = true;
}
break;
}
}
Не проверяйте код:
private void IsUnchecked(object sender, RoutedEventArgs e)
{
CheckBox checkBox = sender as CheckBox;
if (checkBox.Name == "chkWeekday")
{
Monday = false;
Tuesday = false;
Wednesday = false;
Thursday = false;
Friday = false;
}
else
{
Weekday = false; //<============================================ This is why it un-checks all
switch (checkBox.Name) // Handles data not updating yet
{
case "chkMonday":
Monday = false;
break;
case "chkTuesday":
Tuesday = false;
break;
case "chkWednesday":
Wednesday = false;
break;
case "chkThursday":
Thursday = false;
break;
case "chkFriday":
Friday = false;
break;
}
break;
}
}
Есть ли способ сделать это более эффективно / таким образом, чтобы это работало.