protected override void Toggle() {
if (_skipRelativesToggling) {
base.Toggle();
return;
}
var enabled = Enabled;
var parent = Parent;
if (parent == null) {
base.Toggle();
foreach (var car in Children.Where(x => x.Enabled == enabled).ToList()) {
try {
car._skipRelativesToggling = true;
car.Toggle();
} finally {
car._skipRelativesToggling = false;
}
}
} else if (!enabled && !parent.Enabled) {
try {
parent._skipRelativesToggling = true;
parent.Toggle();
} finally {
parent._skipRelativesToggling = false;
}
base.Toggle();
} else {
base.Toggle();
}
}