public void Toggle(Enumerations.CheckBoxState fromState) { switch (fromState) { case Enumerations.CheckBoxState.Unchecked: { this.State = Enumerations.CheckBoxState.Checked; break; } case Enumerations.CheckBoxState.Checked: case Enumerations.CheckBoxState.Indeterminate: default: { this.State = Enumerations.CheckBoxState.Unchecked; break; } } this.UpdateStateOfRelatedNodes(); }
private void UpdateParentNodeState(bool isStartingPoint) { ThreeStateTreeNode parent = this.Parent as ThreeStateTreeNode; if (parent != null) { Enumerations.CheckBoxState state = Enumerations.CheckBoxState.Unchecked; if (!isStartingPoint && (this.State == Enumerations.CheckBoxState.Indeterminate)) { state = Enumerations.CheckBoxState.Indeterminate; } else { state = this.SiblingsState; } if (parent.State != state) { parent.State = state; parent.Checked = (state != Enumerations.CheckBoxState.Unchecked); parent.UpdateParentNodeState(false); } } }