Ошибка CarouselView xamarin forms, конфликтующая с Xamarin forms

#c# #xaml #xamarin #xamarin.forms #carousel

#c# #xaml #xamarin #xamarin.forms #карусель

Вопрос:

Я работал с 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.Формы.CarouselView, Version=1.0.0.0, Culture= нейтральный, PublicKeyToken=null’ и ‘Xamarin.Формы.Ядро, версия = 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-код таким же. Спасибо за помощь, ребята.

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

1. используемая вами библиотека находится в режиме предварительного просмотра, оставалась такой годами и не имеет отступов для завершения. В Xamarin появится новая концепция для carousel. если такой бета-компонент вызывает у вас проблемы, вы бы рекомендовали его не использовать. Возможно, было бы проще создать свой собственный компонент, чем решать эти проблемы

2. @NevilleNazerane Я решил ее с помощью CarouselView. FormsPlugin. Это сработало идеально.

3. Хорошо, тогда опубликуйте ответ и все равно примите во внимание то, что я сказал. Рассмотрите возможные проблемы, с которыми вы можете столкнуться, и время, которое может потребоваться для устранения каждой из них. Однажды я попытался использовать Carousel и после ряда проблем прибегнул к использованию моего собственного элемента управления

Ответ №1:

Используйте элемент управления CarouselView для Xamarin Forms 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"
  

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

1. Привет, Motumo, я решил ее с помощью другого плагина, который я упомянул при редактировании. CarouselView, который был связан с Xamarin forms, не поддерживает свойство position, как я пытался (хотя и не очень уверен). Но я сделал это иначе.

Ответ №2:

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

Xamarin.Формы.CarouselView обновлен последним

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

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

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

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

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

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

1. Привет @Ale_lipa, я использовал этот плагин для решения. Единственная проблема, связанная с этим плагином, заключается в том, что он не работает внутри StackLayout. Я отмечу ваш ответ, и я также отредактировал свой вопрос и включил часть XAML, которая работает идеально.