side page icon example detail code behind xaml xamarin navigation prism tabbed

xaml - page - Página de pestañas dentro de la página de detalles del maestro Xamarin



xamarin forms tabbed page icon (2)

Puede agregar TabbedPage Children como este en XAML:

<MasterDetailPage.Detail> <TabbedPage> <TabbedPage.Children> <ContentPage Title="Page 1" Icon="ja.png" /> <ContentPage Title="Page 2" Icon="ja.png" /> <ContentPage Title="Page 3" Icon="ja.png" /> </TabbedPage.Children> </TabbedPage> </MasterDetailPage.Detail>

Simplemente sustituya sus páginas personalizadas "locales" por ContentPage

O a través de un código:

public TabsPage () { this.Children.Add (new ContentPage () { Title = "Page 1", Icon = "ja.png" }); this.Children.Add (new ContentPage () { Title = "Page 2", Icon = "ja.png" }); this.Children.Add (new ContentPage () { Title = "Page 3", Icon = "ja.png" }); }

ACTUALIZAR:

Hice algunos cambios según lo sugerido por SushiHangover, ahora no recibo ningún error, pero mi menú con pestañas no aparece.

Estoy intentando agregar una página con pestañas como se muestra en la documentación de xamarin, pero sigo recibiendo el siguiente error, System.NullReferenceException "Referencia de objeto no establecida en una instancia de un objeto". ¿Debo declarar un nuevo objeto para cada página o lo hago automáticamente cuando uso xaml?

Aquí está mi StackTrace,

at Xamarin.Forms.Platform.Android.AppCompat.Platform.LayoutRootPage(Xamarin.Forms.P age page, Int32 width, Int32 height) [0x0005d] in C:/BuildAgent/work/aad494dc9bc9783/Xamarin.Forms.Platform.Android/AppCompat/Plat form.cs:279 at Xamarin.Forms.Platform.Android.AppCompat.Platform.Xamarin.Forms.Platform.Android.IPlatformLayout.OnLayout (Boolean changed, Int32 l, Int32 t, Int32 r, Int32 b) [0x00003] in C:/BuildAgent/work/aad494dc9bc9783/Xamarin.Forms.Platform.Android/AppCompat/Platform.cs:196 at Xamarin.Forms.Platform.Android.PlatformRenderer.OnLayout (Boolean changed, Int32 l, Int32 t, Int32 r, Int32 b) [0x0000e] in C:/BuildAgent/work/aad494dc9bc9783/Xamarin.Forms.Platform.Android/PlatformRenderer.cs:73 at Android.Views.ViewGroup.n_OnLayout_ZIIII (IntPtr jnienv, IntPtr native__this, Boolean changed, Int32 l, Int32 t, Int32 r, Int32 b) [0x00009] in /Users/builder/data/lanes/3415/7db2aac3/source/monodroid/src/Mono.Android/platforms/android-23/src/generated/Android.Views.ViewGroup.cs:3427 at (wrapper dynamic-method) System.Object:d59f31f1-b9b6-40ea-9254-a422fe409750 (intptr,intptr,bool,int,int,int,int)

Aquí está mi código,

using Xamarin.Forms; namespace BSi.Mobile.Events.Views { public partial class MainMasterDetailPage : MasterDetailPage { public MainMasterDetailPage() { InitializeComponent(); } } } <?xml version="1.0" encoding="utf-8" ?> <MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms" xmlns:local="clr-namespace:BSi.Mobile.Events.Views;assembly=BSi.Mobile.Events" prism:ViewModelLocator.AutowireViewModel="True" x:Class="BSi.Mobile.Events.Views.MainMasterDetailPage"> <MasterDetailPage.Master> <ContentPage Title="Default" Padding="10"> <StackLayout> <Button Text="Home" Command="{Binding MenuSelectedCommand}" CommandParameter="NavigationPage/MainPage"/> <Button Text="Event Schedule" Command="{Binding MenuSelectedCommand}" CommandParameter="NavigationPage/EventPage"/> <Button Text="Floor Plan" Command="{Binding MenuSelectedCommand}" CommandParameter="NavigationPage/FloorPlanPage"/> <Button Text="Sponsor/Media Partners" Command="{Binding MenuSelectedCommand}" CommandParameter="NavigationPage/SponsorsPage"/> <Button Text="Where To Eat" Command="{Binding MenuSelectedCommand}" CommandParameter="NavigationPage/FoodNearbyPage"/> </StackLayout> </ContentPage> </MasterDetailPage.Master> <MasterDetailPage.Detail> <TabbedPage> <TabbedPage.Children> <local:MainPage Title="Info" Icon="http://icons.iconarchive.com/icons/graphicloads/100-flat/256/home-icon.png"/> <local:EventPage Title="Sessions" Icon="http://icons.iconarchive.com/icons/graphicloads/100-flat/256/home-icon.png"/> <local:SpeakersPage Title="Speakers" Icon="http://icons.iconarchive.com/icons/graphicloads/100-flat/256/home-icon.png"/> <local:ExhibitsPage Title="Exhibits" Icon="http://icons.iconarchive.com/icons/graphicloads/100-flat/256/home-icon.png"/> </TabbedPage.Children> </TabbedPage> </MasterDetailPage.Detail> </MasterDetailPage>


La respuesta fue usar un parámetro de comando que es relativo a las páginas que se mostrarán en la página con pestañas.

<?xml version="1.0" encoding="utf-8"?> <MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms" prism:ViewModelLocator.AutowireViewModel="True" x:Class="BSi.Mobile.Events.Views.MainMasterDetailPage"> <MasterDetailPage.Master> <ContentPage Title="Default"> <StackLayout> <StackLayout BackgroundColor="{StaticResource iconGray}" Padding="15" HeightRequest="100"> <Image Source="canfitpro_logo2" HeightRequest="60" HorizontalOptions="Start" VerticalOptions="EndAndExpand" /> </StackLayout> <TableView Intent="Form" HasUnevenRows="True"> <TableRoot> <TableSection Title="Vancouver Fitness Expo"> <ViewCell> <StackLayout Margin="15, 10, 10, 10" Orientation="Horizontal"> <StackLayout.GestureRecognizers> <TapGestureRecognizer Command="{Binding MenuSelectedCommand}" CommandParameter="EventTabbedPage/NavigationPage/MainPage"/> </StackLayout.GestureRecognizers> <Image Source="icon_home_circle" HeightRequest="40"/> <Label Text="Home" VerticalTextAlignment="Center" Margin="20, 0, 0, 0" Style="{DynamicResource SubtitleStyle}"/> </StackLayout> </ViewCell> <ViewCell> <StackLayout Margin="15, 10, 10, 10" Orientation="Horizontal"> <StackLayout.GestureRecognizers> <TapGestureRecognizer Command="{Binding MenuSelectedCommand}" CommandParameter="EventTabbedPage/NavigationEventPage"/> </StackLayout.GestureRecognizers> <Image Source="icon_sessions_circle" HeightRequest="40"/> <Label Text="Sessions" VerticalTextAlignment="Center" Margin="20, 0, 0, 0" Style="{DynamicResource SubtitleStyle}"/> </StackLayout> </ViewCell> </TableSection> <TableSection Title="Resources"> <ViewCell> <StackLayout Margin="15, 10, 10, 10" Orientation="Horizontal"> <StackLayout.GestureRecognizers> <TapGestureRecognizer Command="{Binding MenuSelectedCommand}" CommandParameter="NavigationPage/FloorPlanPage"/> </StackLayout.GestureRecognizers> <Image Source="icon_floormap_circle" HeightRequest="40"/> <Label Text="Floor Plan" VerticalTextAlignment="Center" Margin="20, 0, 0, 0" Style="{DynamicResource SubtitleStyle}"/> </StackLayout> </ViewCell> <ViewCell> <StackLayout Margin="15, 10, 10, 10" Orientation="Horizontal"> <StackLayout.GestureRecognizers> <TapGestureRecognizer Command="{Binding MenuSelectedCommand}" CommandParameter="NavigationPage/SponsorsPage"/> </StackLayout.GestureRecognizers> <Image Source="icon_partners_circle" HeightRequest="40"/> <Label Text="Sponsor / Media Partners" VerticalTextAlignment="Center" Margin="20, 0, 0, 0" Style="{DynamicResource SubtitleStyle}"/> </StackLayout> </ViewCell> <ViewCell> <StackLayout Margin="15, 10, 10, 10" Orientation="Horizontal"> <StackLayout.GestureRecognizers> <TapGestureRecognizer Command="{Binding MenuSelectedCommand}" CommandParameter="NavigationPage/FoodNearbyPage"/> </StackLayout.GestureRecognizers> <Image Source="icon_restaurant_circle" HeightRequest="40"/> <Label Text="Where To Eat" VerticalTextAlignment="Center" Margin="20, 0, 0, 0" Style="{DynamicResource SubtitleStyle}"/> </StackLayout> </ViewCell> </TableSection> </TableRoot> </TableView> </StackLayout> </ContentPage> </MasterDetailPage.Master> </MasterDetailPage>