#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 полностью отказался от нее.Формирует команду.
В настоящее время лучшим решением является использование 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, которая работает идеально.