protected override void LoadComplete() { base.LoadComplete(); checkbox.Current.BindValueChanged(selected => { if (selected.NewValue) { if (SelectedGroup.Value == null) { checkbox.Current.Value = false; return; } if (ControlPoint.Value == null) { SelectedGroup.Value.Add(ControlPoint.Value = CreatePoint()); } } else { if (ControlPoint.Value != null) { SelectedGroup.Value.Remove(ControlPoint.Value); ControlPoint.Value = null; } } content.BypassAutoSizeAxes = selected.NewValue ? Axes.None : Axes.Y; }, true); SelectedGroup.BindValueChanged(points => { ControlPoint.Value = points.NewValue?.ControlPoints.OfType <T>().FirstOrDefault(); checkbox.Current.Value = ControlPoint.Value != null; }, true); ControlPoint.BindValueChanged(OnControlPointChanged, true); }