public override void UpdateAdapter()
        {
            // By default the CollectionViewAdapter creates the items at whatever size the template calls for
            // But for the Carousel, we want it to create the items to fit the width/height of the viewport
            // So we give it an alternate delegate for creating the views

            var oldItemViewAdapter = ItemsViewAdapter;

            UnsubscribeCollectionItemsSourceChanged(oldItemViewAdapter);
            if (oldItemViewAdapter != null)
            {
                ItemsView.SetValueFromRenderer(CarouselView.PositionProperty, 0);
                ItemsView.SetValueFromRenderer(CarouselView.CurrentItemProperty, null);
            }

            ItemsViewAdapter = CreateAdapter();

            _gotoPosition = -1;

            SwapAdapter(ItemsViewAdapter, false);

            UpdateInitialPosition();

            if (ItemsViewAdapter.ItemsSource is ObservableItemsSource observableItemsSource)
            {
                observableItemsSource.CollectionItemsSourceChanged += CollectionItemsSourceChanged;
            }

            oldItemViewAdapter?.Dispose();
        }
        public override void UpdateAdapter()
        {
            // By default the CollectionViewAdapter creates the items at whatever size the template calls for
            // But for the Carousel, we want it to create the items to fit the width/height of the viewport
            // So we give it an alternate delegate for creating the views

            var oldItemViewAdapter = ItemsViewAdapter;

            if (oldItemViewAdapter != null)
            {
                UnsubscribeCollectionItemsSourceChanged(oldItemViewAdapter);
                ItemsView.SetValueFromRenderer(CarouselView.PositionProperty, 0);
                ItemsView.SetValueFromRenderer(CarouselView.CurrentItemProperty, null);
            }

            _gotoPosition = -1;

            base.UpdateAdapter();

            UpdateInitialPosition();

            SubscribeCollectionItemsSourceChanged(ItemsViewAdapter);
        }