diff --git a/CarouselViewChallenge/CarouselViewChallenge.Android/Assets/materialdesignicons-webfont.ttf b/CarouselViewChallenge/CarouselViewChallenge.Android/Assets/materialdesignicons-webfont.ttf
new file mode 100644
index 0000000..aeba0d2
Binary files /dev/null and b/CarouselViewChallenge/CarouselViewChallenge.Android/Assets/materialdesignicons-webfont.ttf differ
diff --git a/CarouselViewChallenge/CarouselViewChallenge.Android/CarouselViewChallenge.Android.csproj b/CarouselViewChallenge/CarouselViewChallenge.Android/CarouselViewChallenge.Android.csproj
index 1e33499..5d99e0e 100644
--- a/CarouselViewChallenge/CarouselViewChallenge.Android/CarouselViewChallenge.Android.csproj
+++ b/CarouselViewChallenge/CarouselViewChallenge.Android/CarouselViewChallenge.Android.csproj
@@ -54,7 +54,7 @@
-
+
@@ -63,6 +63,7 @@
+
@@ -101,4 +102,4 @@
-
+
\ No newline at end of file
diff --git a/CarouselViewChallenge/CarouselViewChallenge/App.xaml b/CarouselViewChallenge/CarouselViewChallenge/App.xaml
index f3469f1..f68c5b6 100644
--- a/CarouselViewChallenge/CarouselViewChallenge/App.xaml
+++ b/CarouselViewChallenge/CarouselViewChallenge/App.xaml
@@ -1,10 +1,16 @@
-
+
+
+
+
+
+
\ No newline at end of file
diff --git a/CarouselViewChallenge/CarouselViewChallenge/ViewModels/CarouselViewChallengeViewModel.cs b/CarouselViewChallenge/CarouselViewChallenge/ViewModels/CarouselViewChallengeViewModel.cs
new file mode 100644
index 0000000..cc9cca0
--- /dev/null
+++ b/CarouselViewChallenge/CarouselViewChallenge/ViewModels/CarouselViewChallengeViewModel.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Text;
+
+namespace CarouselViewChallenge.ViewModels
+{
+ public class SliderPage
+ {
+ public string Icon { get; set; }
+ public string Header { get; set; }
+ public string Text { get; set; }
+ public string BackgroundColor { get; set; }
+ };
+
+ public class CarouselViewChallengeViewModel : INotifyPropertyChanged
+ {
+ public event PropertyChangedEventHandler PropertyChanged;
+
+ private ObservableCollection _sliders;
+ public ObservableCollection Sliders
+ {
+ get => _sliders;
+ set
+ {
+ if (_sliders != value)
+ {
+ _sliders = value;
+ OnPropertyChanged(new PropertyChangedEventArgs("Sliders"));
+ }
+ }
+ }
+
+ private int _index;
+ public int Index
+ {
+ get => _index;
+ set
+ {
+ if (_index != value)
+ {
+ _index = value;
+ OnPropertyChanged(new PropertyChangedEventArgs("Index"));
+
+ TextLabel = (_index + 1 == Sliders.Count) ? "DONE" : "NEXT";
+ OnPropertyChanged(new PropertyChangedEventArgs("TextLabel"));
+ }
+ }
+ }
+
+ public string TextLabel { get; set; }
+
+ public CarouselViewChallengeViewModel()
+ {
+ Sliders = new ObservableCollection();
+ TextLabel = "NEXT";
+ }
+
+ private void OnPropertyChanged(PropertyChangedEventArgs eventArgs)
+ {
+ PropertyChanged?.Invoke(this, eventArgs);
+ }
+ }
+}
diff --git a/CarouselViewChallenge/CarouselViewChallenge/Views/CarouselViewChallengePage.xaml b/CarouselViewChallenge/CarouselViewChallenge/Views/CarouselViewChallengePage.xaml
index 1a7cc0d..baa22ef 100644
--- a/CarouselViewChallenge/CarouselViewChallenge/Views/CarouselViewChallengePage.xaml
+++ b/CarouselViewChallenge/CarouselViewChallenge/Views/CarouselViewChallengePage.xaml
@@ -1,13 +1,107 @@
-
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/CarouselViewChallenge/CarouselViewChallenge/Views/CarouselViewChallengePage.xaml.cs b/CarouselViewChallenge/CarouselViewChallenge/Views/CarouselViewChallengePage.xaml.cs
index 38f2e9f..161f7f4 100644
--- a/CarouselViewChallenge/CarouselViewChallenge/Views/CarouselViewChallengePage.xaml.cs
+++ b/CarouselViewChallenge/CarouselViewChallenge/Views/CarouselViewChallengePage.xaml.cs
@@ -1,4 +1,5 @@
-using System;
+using CarouselViewChallenge.ViewModels;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -12,9 +13,56 @@ namespace CarouselViewChallenge.Views
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class CarouselViewChallengePage : ContentPage
{
+ public CarouselViewChallengeViewModel viewModel { get; set; }
+
public CarouselViewChallengePage()
{
InitializeComponent();
+ viewModel = new CarouselViewChallengeViewModel();
+ viewModel.Sliders.Add(new SliderPage()
+ {
+ Icon = "\uF684", //"\uF25A",
+ Header = "Hello Food!",
+ Text = "The easiest way to order food from your favourite restaurant!",
+ BackgroundColor = "#F64C73"
+ });
+ viewModel.Sliders.Add(new SliderPage()
+ {
+ Icon = "\uF516",
+ Header = "Movie Tickets",
+ Text = "Book movie tickets for your family and friends!",
+ BackgroundColor = "#20D2BB"
+ });
+ viewModel.Sliders.Add(new SliderPage()
+ {
+ Icon = "\uFCCE",
+ Header = "Great Discounts",
+ Text = "Best discounts on every single service we offer!",
+ BackgroundColor = "#3395FF"
+ });
+ viewModel.Sliders.Add(new SliderPage()
+ {
+ Icon = "\uF01D",
+ Header = "World Travel",
+ Text = "Book tickets of any transportation and travel the world!",
+ BackgroundColor = "#C873F4"
+ });
+ BindingContext = viewModel;
+ }
+
+ private void Carousel_PositionChanged(object sender, PositionChangedEventArgs e)
+ {
+ viewModel.Index = e.CurrentPosition;
+
+ bv0.BackgroundColor = viewModel.Index == 0 ? Color.FromHex("#FFFFFFFF") : Color.FromHex("#7CFFFFFF");
+ bv1.BackgroundColor = viewModel.Index == 1 ? Color.FromHex("#FFFFFFFF") : Color.FromHex("#7CFFFFFF");
+ bv2.BackgroundColor = viewModel.Index == 2 ? Color.FromHex("#FFFFFFFF") : Color.FromHex("#7CFFFFFF");
+ bv3.BackgroundColor = viewModel.Index == 3 ? Color.FromHex("#FFFFFFFF") : Color.FromHex("#7CFFFFFF");
+ }
+ private void Next_Tapped(object sender, EventArgs e)
+ {
+ if (carousel.Position + 1 < viewModel.Sliders.Count)
+ carousel.Position += 1;
}
}
}
\ No newline at end of file