CarouselLayout CreatePagesCarousel() { var carousel = new CarouselLayout { HorizontalOptions = LayoutOptions.FillAndExpand, VerticalOptions = LayoutOptions.FillAndExpand, IndicatorStyle = _indicatorStyle, ItemTemplate = new DataTemplate(typeof(DynamicTemplateLayout)) }; carousel.SetBinding(CarouselLayout.ItemsSourceProperty, "Pages"); carousel.SetBinding(CarouselLayout.SelectedItemProperty, "CurrentPage", BindingMode.TwoWay); return carousel; }
CarouselLayout CreatePagesCarousel(List<SelectedGoalMedia> media) { List<CarousalViewModel> Pages = new List<CarousalViewModel>(); foreach (var item in media) { CarousalViewModel caros = new CarousalViewModel { Title = "1", Background = Color.White, ImageSource = Constants.SERVICE_BASE_URL + item.goal_media }; Pages.Add(caros); } /* List<CarousalViewModel> Pages = new List<CarousalViewModel>() { new CarousalViewModel { Title = "1", Background = Color.White, ImageSource = "icon.png" }, new CarousalViewModel { Title = "2", Background = Color.Red, ImageSource = "icon.png" }, new CarousalViewModel { Title = "3", Background = Color.Blue, ImageSource = "one.jpeg" }, new CarousalViewModel { Title = "4", Background = Color.Yellow, ImageSource = "icon.png" }, };*/ CarouselLayout carousel = new CarouselLayout { IndicatorStyle = CustomLayouts.Controls.CarouselLayout.IndicatorStyleEnum.Dots, ItemTemplate = new DataTemplate(typeof(CarousalTemplate)) }; carousel.ItemsSource = Pages; //carousel.SetBinding(CarouselLayout.ItemsSourceProperty, "Pages"); //carousel.SetBinding(CarouselLayout.SelectedItemProperty, "CurrentPage", BindingMode.TwoWay); return carousel; }
public HomePage(CarouselLayout.IndicatorStyleEnum indicatorStyle) { _indicatorStyle = indicatorStyle; viewModel = new SwitcherPageViewModel(); BindingContext = viewModel; Title = _indicatorStyle.ToString(); relativeLayout = new RelativeLayout { HorizontalOptions = LayoutOptions.FillAndExpand, VerticalOptions = LayoutOptions.FillAndExpand }; var pagesCarousel = CreatePagesCarousel(); var dots = CreatePagerIndicatorContainer(); _tabs = CreateTabs(); switch(pagesCarousel.IndicatorStyle) { case CarouselLayout.IndicatorStyleEnum.Dots: relativeLayout.Children.Add (pagesCarousel, Constraint.RelativeToParent ((parent) => { return parent.X; }), Constraint.RelativeToParent ((parent) => { return parent.Y; }), Constraint.RelativeToParent ((parent) => { return parent.Width; }), Constraint.RelativeToParent ((parent) => { return parent.Height/2; }) ); relativeLayout.Children.Add (dots, Constraint.Constant (0), Constraint.RelativeToView (pagesCarousel, (parent,sibling) => { return sibling.Height - 18; }), Constraint.RelativeToParent (parent => parent.Width), Constraint.Constant (18) ); break; case CarouselLayout.IndicatorStyleEnum.Tabs: var tabsHeight = 50; relativeLayout.Children.Add (_tabs, Constraint.Constant (0), Constraint.RelativeToParent ((parent) => { return parent.Height - tabsHeight; }), Constraint.RelativeToParent (parent => parent.Width), Constraint.Constant (tabsHeight) ); relativeLayout.Children.Add (pagesCarousel, Constraint.RelativeToParent ((parent) => { return parent.X; }), Constraint.RelativeToParent ((parent) => { return parent.Y; }), Constraint.RelativeToParent ((parent) => { return parent.Width; }), Constraint.RelativeToView (_tabs, (parent, sibling) => { return parent.Height - (sibling.Height); }) ); break; default: relativeLayout.Children.Add (pagesCarousel, Constraint.RelativeToParent ((parent) => { return parent.X; }), Constraint.RelativeToParent ((parent) => { return parent.Y; }), Constraint.RelativeToParent ((parent) => { return parent.Width; }), Constraint.RelativeToParent ((parent) => { return parent.Height; }) ); break; } Content = relativeLayout; }