Las páginas CarouselPage son páginas que el usuario puede desplazar de lado a lado horizontalmente para mostrar contenido de otras páginas.
El CarouselPage proporciona una experiencia de navegación que nos puede puede transmitir una sensación natural y familiar a los usuarios de Windows Phone. Usando Device.OnPlatform los desarrolladores de aplicaciones pueden proporcionar una navegación personalizada por plataforma. Por ejemplo el programador puede usar un NavigationPage para Android e iOS y usar CarouselPage para Windows Phone.
El siguiente ejemplo de XAML, crea una página CarouselPage que muestra tres sencillas páginas de contenido.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?xml version="1.0" encoding="UTF-8"?> <CarouselPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="XamlExample1.MyPage"> <ContentPage> <StackLayout> <Label Text="Rojo" /> <BoxView Color="Red" VerticalOptions="FillAndExpand" /> </StackLayout> </ContentPage> <ContentPage> <StackLayout> <Label Text="Verde" /> <BoxView Color="Green" VerticalOptions="FillAndExpand" /> </StackLayout> </ContentPage> <ContentPage> <StackLayout> <Label Text="Azul" /> <BoxView Color="Blue" VerticalOptions="FillAndExpand" /> </StackLayout> </ContentPage> </CarouselPage> |
El mismo ejemplo muestra como conseguir el mismo objetivo en C# con la excepción de que el texto de las etiquetas (Label) viene dado a partir del objeto Color en lugar de introducirlo manualmente como hemos hecho antes.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
List<ContentPage> pages = new List<ContentPage> (0); Color[] colors = { Color.Red, Color.Green, Color.Blue }; foreach (Color c in colors) { pages.Add (new ContentPage { Content = new StackLayout { Children = { new Label { Text = c.ToString () }, new BoxView { Color = c, VerticalOptions = LayoutOptions.FillAndExpand } } } }); } MainPage = new CarouselPage { Children = { pages [0], pages [1], pages [2] } }; |
Atencion: Cuando se embebe una página CarouselPage desde de MasterDetailPage.Detail se debe establecer la propiedad MasterDetailPage.IsGestureEnabled a falso para evitar conflictos entre ambos tipos de página