In this blog post, you will learn how to use CarouselView in Xamarin.Forms.
Introduction
CollectionView
Xamarin.Forms code runs on multiple platforms - each of which has its own filesystem. This means that reading and writing files is most easily done using the native file APIs on each platform. Alternatively, embedded resources are a simpler solution to distribute data files with an app.
CarouselView
CarouselView is available in Xamarin.Forms 4.3. However, it is currently experimental and can only be used by adding the following line of code to your AppDelegate class on iOS, or to your MainActivity class on Android, before calling Forms.Init:
https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/carouselview/
https://github.com/pauldipietro/CarouselViewChallenge
Prerequisites
Start by creating a new Xamarin.Forms project. You wíll learn more by going through the steps yourself.
Visual Studio 2019 has more options in the opening window. Clone or check out the code from any repository or, open a project or solution for your computer.
Now, you need to click "Create a new project".
Now, filter by Project Type: Mobile
Choose the Mobile App (Xamarin. forms) project under C# and Mobile.
Name your app. You probably want your project and solution to use the same name as your app. Put it on your preferred location for projects and click "Create".
Now, select the blank app and target platforms - Android, iOS and Windows (UWP).
Subsequently, go to the solution. In there, you get all the files and sources of your project (.NET Standard). Now, select the XAML page and double-click to open the MainPage.Xaml page.
You now have a basic Xamarin.Forms app. Click the Play button to try it out.
Note:
Before you initialize Xamarin.Forms in your MainActivity.cs and AppDelegate, add the following flag.
Android Implementation
MainActivity.cs
iOS Implementation
AppDelegate.cs
Create a Model
Create a Model to Bind the Collections.
ViewModel
Now, Bind the Collection to CarouselView. Similar CollectionView and ListView.
Setting up the User Interface
Go to MainPage.Xaml and write the following code. I just created one CarouselView it's like a collectionview
https://www.c-sharpcorner.com/article/xamarin-forms-collectionview2/
MainPage.xaml
Click the "Play" button to try it out.
I hope you have understood how to use CarouselView in Xamarin.Forms..
Thanks for reading. Please share your comments and feedback. Happy Coding :)
Introduction
CollectionView
Xamarin.Forms code runs on multiple platforms - each of which has its own filesystem. This means that reading and writing files is most easily done using the native file APIs on each platform. Alternatively, embedded resources are a simpler solution to distribute data files with an app.
CarouselView
CarouselView is available in Xamarin.Forms 4.3. However, it is currently experimental and can only be used by adding the following line of code to your AppDelegate class on iOS, or to your MainActivity class on Android, before calling Forms.Init:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Forms.SetFlags("CollectionView_Experimental"); |
https://github.com/pauldipietro/CarouselViewChallenge
Prerequisites
- Visual Studio 2017 or later (Windows or Mac)
- Xamarin.Forms 4.3 Updated
Start by creating a new Xamarin.Forms project. You wíll learn more by going through the steps yourself.
Visual Studio 2019 has more options in the opening window. Clone or check out the code from any repository or, open a project or solution for your computer.
Now, you need to click "Create a new project".
Now, filter by Project Type: Mobile
Choose the Mobile App (Xamarin. forms) project under C# and Mobile.
Name your app. You probably want your project and solution to use the same name as your app. Put it on your preferred location for projects and click "Create".
Now, select the blank app and target platforms - Android, iOS and Windows (UWP).
Subsequently, go to the solution. In there, you get all the files and sources of your project (.NET Standard). Now, select the XAML page and double-click to open the MainPage.Xaml page.
You now have a basic Xamarin.Forms app. Click the Play button to try it out.
Note:
Before you initialize Xamarin.Forms in your MainActivity.cs and AppDelegate, add the following flag.
Android Implementation
MainActivity.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
protected override void OnCreate(Bundle savedInstanceState) | |
{ | |
TabLayoutResource = Resource.Layout.Tabbar; | |
ToolbarResource = Resource.Layout.Toolbar; | |
base.OnCreate(savedInstanceState); | |
Forms.SetFlags("CollectionView_Experimental"); | |
Xamarin.Essentials.Platform.Init(this, savedInstanceState); | |
global::Xamarin.Forms.Forms.Init(this, savedInstanceState); | |
LoadApplication(new App()); | |
} |
AppDelegate.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public override bool FinishedLaunching(UIApplication app, NSDictionary options) | |
{ | |
Forms.SetFlags("CollectionView_Experimental"); | |
global::Xamarin.Forms.Forms.Init(); | |
LoadApplication(new App()); | |
return base.FinishedLaunching(app, options); | |
} | |
Create a Model
Create a Model to Bind the Collections.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class BirdsModel | |
{ | |
public string Title { get; set; } | |
public ImageSource ImagePath { get; set; } | |
public string Description { get; set; } | |
} |
ViewModel
Now, Bind the Collection to CarouselView. Similar CollectionView and ListView.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using CarouselViewChallenge.Models; | |
namespace CarouselViewChallenge.ViewModels | |
{ | |
public class CarouselPageViewModel: INotifyPropertyChanged | |
{ | |
public event PropertyChangedEventHandler PropertyChanged; | |
private ObservableCollection<BirdsModel> _birds; | |
private string _pageTitle; | |
public CarouselPageViewModel() | |
{ | |
_pageTitle = "CarouselViewChallege"; | |
_birds = new ObservableCollection<BirdsModel>(); | |
_birds.Add(new BirdsModel { Title = "Asian Paradise Flycatcher", ImagePath = "Asian-Paradise-Flycatcher.jpg" }); | |
_birds.Add(new BirdsModel { Title = "Sarus Crane", ImagePath = "Sarus-Crane.jpg" }); | |
_birds.Add(new BirdsModel { Title = "Himalayan Monal", ImagePath = "Himalayan-Monal.jpg" }); | |
_birds.Add(new BirdsModel { Title = "Indian Peafowl", ImagePath = "Indian-Peafowl.jpg" }); | |
_birds.Add(new BirdsModel { Title = "Mrs. Gould’s Sunbird", ImagePath = "Mrs.-Gould’s-Sunbird.jpg" }); | |
_birds.Add(new BirdsModel { Title = "Oriental Dwarf Kingfisher", ImagePath = "Oriental-Dwarf-Kingfisher.jpg" }); | |
_birds.Add(new BirdsModel { Title = "Red Headed Trogon", ImagePath = "Red-Headed-Trogon.jpg" }); | |
} | |
public ObservableCollection<BirdsModel> Birds | |
{ | |
get | |
{ | |
return _birds; | |
} | |
set | |
{ | |
if (_birds != value) | |
{ | |
_birds = value; | |
OnPropertyChanged(new PropertyChangedEventArgs("Birds")); | |
} | |
} | |
} | |
public string Title | |
{ | |
get | |
{ | |
return _pageTitle; | |
} | |
set | |
{ | |
if (_pageTitle != value) | |
{ | |
_pageTitle = value; | |
OnPropertyChanged(new PropertyChangedEventArgs("Title")); | |
} | |
} | |
} | |
private void OnPropertyChanged(PropertyChangedEventArgs eventArgs) | |
{ | |
PropertyChanged?.Invoke(this, eventArgs); | |
} | |
} | |
} | |
Go to MainPage.Xaml and write the following code. I just created one CarouselView it's like a collectionview
https://www.c-sharpcorner.com/article/xamarin-forms-collectionview2/
MainPage.xaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8" ?> | |
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" | |
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" | |
xmlns:d="http://xamarin.com/schemas/2014/forms/design" | |
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" | |
mc:Ignorable="d" Title="{Binding Title}" | |
x:Class="CarouselViewChallenge.Views.CarouselViewChallengePage"> | |
<ContentPage.Content> | |
<StackLayout> | |
<CarouselView ItemsSource="{Binding Birds}" PeekAreaInsets="50"> | |
<CarouselView.ItemTemplate> | |
<DataTemplate> | |
<StackLayout> | |
<Frame BorderColor="Gray" Margin="8" HasShadow="True" HeightRequest="250" CornerRadius="20" VerticalOptions="CenterAndExpand"> | |
<StackLayout> | |
<Image Source="{Binding ImagePath}"/> | |
<Label Text="{Binding Title}" FontSize="24" FontAttributes="Bold" HorizontalTextAlignment="Center"/> | |
</StackLayout> | |
</Frame> | |
</StackLayout> | |
</DataTemplate> | |
</CarouselView.ItemTemplate> | |
</CarouselView> | |
</StackLayout> | |
</ContentPage.Content> | |
</ContentPage> |
Click the "Play" button to try it out.
I hope you have understood how to use CarouselView in Xamarin.Forms..
Thanks for reading. Please share your comments and feedback. Happy Coding :)