CarouselView xamarin создает конфликтующие ошибки форм Xamarin - PullRequest
0 голосов
/ 04 марта 2019

Я работал с CarouselView при использовании пакета Nuget Xamarin.Forms.CarouselView.Я попытался отобразить изображения как автоматическое скольжение.

XAML

<StackLayout Grid.Row="0" Grid.ColumnSpan="4">
    <cv:CarouselView x:Name="MainCarouselView" Position="{Binding PositionIndex, Mode=TwoWay}">
        <cv:CarouselView.ItemTemplate>
            <DataTemplate>
                <Image Source="{Binding .}"></Image>
            </DataTemplate>
        </cv:CarouselView.ItemTemplate>
    </cv:CarouselView >
</StackLayout>

C #

var image = new ObservableCollection<ImageSource>
{
    ImageSource.FromFile("Image1.jpg"),
    ImageSource.FromFile("Image2.jpg"),
    ImageSource.FromFile("Image3.jpg")
};

MainCarouselView.ItemsSource = image;

Device.StartTimer(TimeSpan.FromSeconds(2), (Func<bool>) (() =>
{
    MainCarouselView.Position = (MainCarouselView.Position + 1) % image.Count;
    return true;
}));

Послепри запуске приложения на устройстве или в эмуляторе я получаю эту ошибку:

Код серьезности Описание Ошибка состояния подавления строки файла проекта CS0433 Тип «CarouselView» существует в обоих «Xamarin.Forms.CarouselView, Version = 1.0»..0.0, Культура = нейтральный, PublicKeyToken = null 'и' Xamarin.Forms.Core, Версия = 2.0.0.0, Культура = нейтральный, PublicKeyToken = null '

Я попытался удалить пакет Nugetи попытался тогда CarouselView остается пустым и также не содержит свойства Position.Любая помощь будет оценена.

РЕДАКТИРОВАТЬ: я решил с помощью CarouselView.FormsPlugin Xaml:

<controls:CarouselViewControl x:Name="MainCarouselView"  Grid.Row="0" Grid.ColumnSpan="3" Position="{Binding PositionIndex, Mode=TwoWay}">
                    <controls:CarouselViewControl.ItemTemplate>
                        <DataTemplate>
                            <Image Source="{Binding .}"></Image>
                        </DataTemplate>
                    </controls:CarouselViewControl.ItemTemplate>
              </controls:CarouselViewControl >

и сохранил код CS такой же.Спасибо за помощь, ребята.

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Используйте элемент управления CarouselView для форм Xamarin https://github.com/alexrainman/CarouselView

и убедитесь, что выполняете следующие действия:

В проектах iOS и Android вызовите:

MainActivity.cs:

CarouselView.FormsPlugin.Android.CarouselViewRenderer.Init();

AppDelegate.cs:

CarouselView.FormsPlugin.iOS.CarouselViewRenderer.Init();

В вашем представлении XAML

xmlns:cv="clr-namespace:CarouselView.FormsPlugin.Abstractions;assembly=CarouselView.FormsPlugin.Abstractions"
0 голосов
/ 04 марта 2019

Вы не должны использовать Xamarin.Forms.CarouselView плагин, так как он не обновлялся годами ... Для тех, кто заинтересован, он должен был стать оптимизированным преемником CarouselPage - вы можете прочитать об этом в блоге Джеймса .По какой-то причине он был полностью заброшен командой Xamarin.Forms.

Xamarin.Forms.CarouselView Last Updated

В настоящее время лучшим решением является использование Alex's Rainman CarouselView.FormsPlugin плагин, который просто великолепен!Тем не менее, я думаю, что в настоящее время у него есть некоторые проблемы с поддержкой Xamarin.Forms 3.5 ( github Issue )

ПРИМЕЧАНИЕ : В зависимости от того, чего именно вы хотите достичь, вы можетехочу взглянуть на HorizontalListView карусели Sharpnado, которая, я почти уверен, основана на пакете Алекса.

В будущем следите за CollectionView , который станет основой для нового CarouselView в Xamarin.Forms 4.0.Вы можете прочитать немного больше об этом (и посмотреть предварительный просмотр) в этом блоге

ПРИМЕЧАНИЕ : Пожалуйста, избегайте использования CarouselPage, а также Xamarin.Forms.CarouselView

CarouselPage не поддерживает виртуализацию пользовательского интерфейса.Следовательно, производительность может ухудшиться, если CarouselPage содержит слишком много дочерних элементов.

...