Después de mirar todas las preguntas y foros, todavía no puedo obtener mi página de detalles maestros con el ícono de hamburguesa. Si uso esta página de detalles Master como inicio de la aplicación, veo que la funcionalidad funciona como se esperaba. Por favor mira el código de abajo

DashBoadCreator.xaml `

<MasterDetailPage.Master>

</MasterDetailPage.Master>

<MasterDetailPage.Detail>

  </x:Arguments>
</NavigationPage>
</MasterDetailPage.Detail>
`

`public partial class DashBoadCreator : MasterDetailPage
{
DashboardMaster master;
DashboardDetail1 detil;
public DashBoadCreator()
{
InitializeComponent();
master = new DashboardMaster();
detil = new DashboardDetail1();

        Master = master;
        Master.Title = "this is a title";
        Master.Icon = "icon.png";
        Detail = new NavigationPage(detil);

    }

    // Event for Menu Item selection, here we are going to handle navigation based
    // on user selection in menu ListView

}`
DashboadMaster.xaml
`

<!-- 
         This StackLayout you can use for other
         data that you want to have in your menu drawer

    <StackLayout BackgroundColor="#e74c3c"
                 HeightRequest="75">

      <Label Text="Some Text title"
             FontSize="20"
             VerticalOptions="CenterAndExpand"
             TextColor="White"
             HorizontalOptions="Center"/>
    </StackLayout>         -->

<ListView x:Name="navigationDrawerList"
          RowHeight="60"
          SeparatorVisibility="None"
          BackgroundColor="#e8e8e8"
          ItemSelected="OnMenuItemSelected">

  <ListView.ItemTemplate>
    <DataTemplate>
      <ViewCell>

        <!-- Main design for our menu items -->
        <StackLayout VerticalOptions="FillAndExpand"
                     Orientation="Horizontal"
                     Padding="20,10,0,10"
                     Spacing="20">

          <Image Source="{Binding Icon}"
                 WidthRequest="40"
                 HeightRequest="40"
                 VerticalOptions="Center" />

          <Label Text="{Binding Title}"
                 FontSize="Medium"
                 VerticalOptions="Center"
                 TextColor="Black"/>
        </StackLayout>
      </ViewCell>
    </DataTemplate>
  </ListView.ItemTemplate>
</ListView>
`

`clase parcial pública DashboardMaster: ContentPage {

public List<MasterPageItem> menuList { get; set; }

public DashboardMaster()
{
    Title = "samples";
    InitializeComponent();

    menuList = new List<MasterPageItem>();

    // Creating our pages for menu navigation
    // Here you can define title for item, 
    // icon on the left side, and page that you want to open after selection
    var page1 = new MasterPageItem() { Title = "Item 1", Icon = "itemIcon1.png", TargetType = typeof(DashboardDetail1) };
    var page2 = new MasterPageItem() { Title = "Item 2", Icon = "itemIcon2.png", TargetType = typeof(DashboardDetail1) };
    var page3 = new MasterPageItem() { Title = "Item 3", Icon = "itemIcon3.png", TargetType = typeof(DashboardDetail1) };
    var page4 = new MasterPageItem() { Title = "Item 4", Icon = "itemIcon4.png", TargetType = typeof(DashboardDetail1) };
    var page5 = new MasterPageItem() { Title = "Item 5", Icon = "itemIcon5.png", TargetType = typeof(DashboardDetail1) };
    var page6 = new MasterPageItem() { Title = "Item 6", Icon = "itemIcon6.png", TargetType = typeof(DashboardDetail1) };
    var page7 = new MasterPageItem() { Title = "Item 7", Icon = "itemIcon7.png", TargetType = typeof(DashboardDetail1) };
    var page8 = new MasterPageItem() { Title = "Item 8", Icon = "itemIcon8.png", TargetType = typeof(DashboardDetail1) };
    var page9 = new MasterPageItem() { Title = "Item 9", Icon = "itemIcon9.png", TargetType = typeof(DashboardDetail1) };

    // Adding menu items to menuList
    menuList.Add(page1);
    menuList.Add(page2);
    menuList.Add(page3);
    menuList.Add(page4);
    menuList.Add(page5);
    menuList.Add(page6);
    menuList.Add(page7);
    menuList.Add(page8);
    menuList.Add(page9);

    // Setting our list to be ItemSource for ListView in MainPage.xaml
    navigationDrawerList.ItemsSource = menuList;
    //Application.Current.MainPage = new DashboardMaster();
    // NavigationPage.SetHasNavigationBar(this, false);

}
private void OnMenuItemSelected(object sender, SelectedItemChangedEventArgs e)
{
    DashBoadCreator creator = new DashBoadCreator();

    var item = (MasterPageItem)e.SelectedItem;
    Type page = item.TargetType;

    creator.Detail = new NavigationPage((Page)Activator.CreateInstance(page));
    creator.IsPresented = false;
}

}

<ListView.ItemTemplate>


          <Image Source="{Binding Icon}"
                    WidthRequest="40"
                    HeightRequest="40"
                    VerticalOptions="Center" />

          <Label Text="{Binding Title}"
                 FontSize="Medium"
                 VerticalOptions="Center"
                 TextColor="Black"/>
         <!-- <Label Text="{Binding Description}"
                 FontSize="Small"
                 VerticalOptions="End"/>-->
          <StackLayout VerticalOptions="End" HorizontalOptions="End">
            <Button Text="Apply" FontSize="10"  TextColor="Green" BorderWidth="1" HorizontalOptions="End" />
          </StackLayout>
        </StackLayout>

      </ViewCell>
    </DataTemplate>
  </ListView.ItemTemplate>

</ListView>
-1
Akshay Halasangi 25 dic. 2016 a las 18:31

3 respuestas

La mejor respuesta

Después de encontrar a alguien, me encontré con esta discusión

Falta el botón de menú en MasterDetailPage al asignar App.MainPage

Usando esos hallazgos, cambié mi app.xaml.cs de la siguiente manera

 MainPage = new NavigationPage(new MenuPage());
 MasterDetailTest.App.Current.MainPage.Navigation.PushAsync(new MainPage());

Ahora la página maestra es siempre la página raíz y el menú de hamburguesas funciona como se esperaba. Para cualquier otra persona que tenga este problema, espero que esto te ayude de alguna manera

0
Community 23 may. 2017 a las 12:31

Codifiqué una demostración de trabajo siguiendo algunos tutos diferentes y obteniendo la parte más importante de ellos. Entonces, al menos para mí, fue una demostración más simple que puedo obtener.

Mira este enlace.

Mi demostración de trabajo de github

Donde Intervection es una página de detalles aleatoria (constructor por parámetro).

Déjame saber sobre cualquier duda que puedas tener.

Salud. Feliz Navidad.

0
Elias MP 26 dic. 2016 a las 09:14

Establecer icono para la página maestra para ver el icono de hamburguesa

Código de muestra:

public masterpage()
{
     Icon = "hamburger.png";
}
1
Jay Patel 26 dic. 2016 a las 07:07