Xamarin.Forms 3.6打破carouselview?

时间:2019-04-04 11:42:53

标签: 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));

3.6中不存在CarouselView.Position和CarouselIndicators :(我需要在3.6中手动实现指标吗?

1 个答案:

答案 0 :(得分:2)

由于Xamarin.Forms 3.6包含CarouselView的实现,因此,如果您从使用Xamarin.Forms <3.6和Xamarin.Forms.CarouselView升级到Xamarin.Forms 3.6,它将会崩溃。因为

  1. Xamarin.Forms.CarouselView nuget软件包已弃用,并且两年没有更新
  2. 同时使用Xamarin.Forms 3.6和Xamarin.Forms.CarouselView,您将在两个CarouselView元素之间发生命名冲突
  3. Xamarin.Forms 3.6中的Xamarin.Forms.CarouselView实现不包含Position属性

许多项目切换到CarouselViews的社区实现:

您的解决方案将是:

  1. 删除Xamarin.Forms.CarouselView
  2. 添加https://github.com/AndreiMisiukevich/CardViewCardsView nuget包)
  3. 将Xamarin.Forms升级到3.6
  4. 更改
_carouselView.SetBinding(CarouselView.PositionProperty, nameof(_viewModel.Position));

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