Xamarin.Forms 3.6 нарушает режим просмотра карусели?

#xamarin.forms

#xamarin.forms

Вопрос:

Xamarin.Forms 3.6 включил CarouselView, поэтому я больше не могу использовать пакет nuget, но в поставляемой версии, похоже, отсутствуют некоторые функции, в частности, индикаторы, похоже, полностью отсутствуют?

Вот мой старый код, который больше не компилируется:

             // Create the carousel
            _carouselView = new CarouselView()
            {
                VerticalOptions = LayoutOptions.FillAndExpand,
                HorizontalOptions = LayoutOptions.FillAndExpand,
            };

            _carouselView.ItemTemplate = template;
            _carouselView.SetBinding(ItemsView.ItemsSourceProperty, nameof(_viewModel.CarouselItems));
            _carouselView.SetBinding(CarouselView.PositionProperty, nameof(_viewModel.Position));

            // Create page-indicator
            var indicator = new CarouselIndicators { ItemsSource = _viewModel.CarouselItems };
            indicator.Margin = new Thickness(20, 20, 20, 0);
            indicator.SetBinding(CarouselIndicators.PositionProperty, nameof(_viewModel.Position));

  

Режим просмотра карусели.Position и CarouselIndicators отсутствуют в 3.6 : (Нужно ли мне внедрять индикаторы вручную в 3.6?

Комментарии:

1. Вы ссылаетесь на этот пакет ?

2. Вы смешиваете CarouselView от Xamarin Forms с CarouselView от AlexRainMan, также вы уверены, что Xamarin Forms добавил его? Потому что я не в курсе этого!!

3. Какую версию NuGet вы используете для добавления CarouselView. Вы имеете в виду, что предварительная версия может использовать CarouselView. Position и CarouselIndicators? @Tompi

4. Да, @JuniorJiang-MSFT, я работаю над предварительной версией. Возможно, это была официальная версия, которая была объединена в XF в 3.6 и что мои проблемы связаны только с предварительными версиями…

5. @G.hakim: Нет, я не смешиваю их, но, похоже, XF объединил ЧАСТИ carouselview в 3.6, но не в полнофункциональную версию… ИТАК, я думаю, я отложу обновление XF до тех пор, пока оно не будет полностью объединено: forums.xamarin.com/discussion/150588/conflicting-carouselviews

Ответ №1:

Как Xamarin.Forms 3.6 включает реализацию CarouselView, если вы перейдете с использования Xamarin.Формы<3.6 и Xamarin.Формы.CarouselView для Xamarin.Forms 3.6 он собирается сломаться. Потому что

  1. Xamarin.Формы.Пакет nuget CarouselView устарел и не обновлялся в течение 2 лет
  2. из-за наличия Xamarin.Формы 3.6 и Xamarin.Формы.CarouselView параллельно у вас будет конфликт имен между двумя элементами CarouselView
  3. Xamarin.Формы.Реализация CarouselView в Xamarin.Формы 3.6 не содержат Position свойства

Многие проекты перешли на реализацию CarouselViews сообществом :

Решением для вас было бы :

  1. Удалите Xamarin.Формы.CarouselView
  2. Добавить https://github.com/AndreiMisiukevich/CardView (Пакет nuget CardsView)
  3. Обновите Xamarin.Формы для 3.6
  4. Изменить
 _carouselView.SetBinding(CarouselView.PositionProperty, nameof(_viewModel.Position));
  

Для

 _carouselView.SetBinding(CardsView.SelectedIndexProperty, nameof(_viewModel.Position));