protected override void ChildItemStateChanged(CarouselItem item, CarouselItemState value)
        {
            base.ChildItemStateChanged(item, value);

            switch (value)
            {
            case CarouselItemState.Selected:
                updateSelected(item);
                break;

            case CarouselItemState.NotSelected:
            case CarouselItemState.Collapsed:
                attemptSelection();
                break;
            }
        }
        protected virtual void ChildItemStateChanged(CarouselItem item, CarouselItemState value)
        {
            // ensure we are the only item selected
            if (value == CarouselItemState.Selected)
            {
                foreach (var b in InternalChildren)
                {
                    if (item == b)
                    {
                        continue;
                    }
                    b.State.Value = CarouselItemState.NotSelected;
                }

                State.Value = CarouselItemState.Selected;
            }
        }