首页 > 解决方案 > 推入导航页面时导航丢失菜单

问题描述

我有一个如下所示的内容页面并显示,但我正在丢失我的汉堡菜单,因为我正在使用以下内容推送它。我在 xamrian 中使用标准的主详细信息应用程序。

所以我的主要问题是如何在不丢失汉堡菜单的情况下从后面的代码推送到内容页面?就像我使用推送一样

    <?xml version="1.0" encoding="utf-8" ?>
    <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
                 xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"

              xmlns:telerikGrid="clr-namespace:Telerik.XamarinForms.DataGrid;assembly=Telerik.XamarinForms.DataGrid"
    xmlns:telerikPrimitives="clr-namespace:Telerik.XamarinForms.Primitives;assembly=Telerik.XamarinForms.Primitives"
    xmlns:telerikInput="clr-namespace:Telerik.XamarinForms.Input;assembly=Telerik.XamarinForms.Input" 

                 x:Class="FuelStockApp.Views.StockScanning">
        <ContentPage.Content>
            <StackLayout>

                <telerikInput:RadButton x:Name="btnTestScan" BackgroundColor="Blue" TextColor="White" Clicked="BtnTestScan_Clicked"  Text="Test Scan" />


                <telerikGrid:RadDataGrid x:Name="gridItems"  SelectionMode="Single"   ItemsSource="{Binding Boms}" AutoGenerateColumns="False" >
                    <telerikGrid:RadDataGrid.Columns>
                        <telerikGrid:DataGridTextColumn PropertyName="StockItemID"  HeaderText="StockItem" />
                        <telerikGrid:DataGridTextColumn PropertyName="Name" HeaderText="Name" />
                        <telerikGrid:DataGridTextColumn PropertyName="Quantity" HeaderText="Quantity" />
                        <telerikGrid:DataGridTemplateColumn x:Name="Actions" HeaderText="Scan Item">
                            <telerikGrid:DataGridTemplateColumn.CellContentTemplate>
                                <DataTemplate>
                                    <telerikInput:RadButton 
                         Grid.Row="0" Grid.Column="1" HeightRequest="40" Text="Scan Item" x:Name="btnScanItem" Margin="0, 2, 0, 0" VerticalOptions="StartAndExpand" HorizontalOptions="Center" 
                         BackgroundColor="Black" TextColor="White" />

                                </DataTemplate>
                            </telerikGrid:DataGridTemplateColumn.CellContentTemplate>
                        </telerikGrid:DataGridTemplateColumn>
                        <telerikGrid:DataGridTemplateColumn x:Name="Edit" HeaderText="Edit Item">
                            <telerikGrid:DataGridTemplateColumn.CellContentTemplate>
                                <DataTemplate>
                                    <telerikInput:RadButton 
                         Grid.Row="0" Grid.Column="1" HeightRequest="40" Text="Edit Item"   x:Name="btnScanItem" Margin="0, 2, 0, 0" VerticalOptions="StartAndExpand" HorizontalOptions="Center" 
                         BackgroundColor="Black" TextColor="White" />

                                </DataTemplate>
                            </telerikGrid:DataGridTemplateColumn.CellContentTemplate>
                        </telerikGrid:DataGridTemplateColumn>
                    </telerikGrid:RadDataGrid.Columns>

                </telerikGrid:RadDataGrid>
            </StackLayout>
        </ContentPage.Content>
    </ContentPage>

在这里你可以看到我正在使用

    private async void BtnFindBom_Clicked_1(object sender, EventArgs e)
    {
        string result = await dataTransFer.GetIsAliveState();        
        await App.Current.MainPage.Navigation.PushModalAsync(new StockScanning(txtBomId.Text));

    }

显示我的主页正在设置。

    public App()
    {
          InitializeComponent();
          DependencyService.Register<MockDataStore>();
          MainPage = new MainPage();
    }

我的主页代码来自上面。

    <?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:views="clr-namespace:FuelStockApp.Views"
                x:Class="FuelStockApp.Views.MainPage">

        <MasterDetailPage.Master>
            <views:MenuPage />
        </MasterDetailPage.Master>

        <MasterDetailPage.Detail>
            <NavigationPage>
                <NavigationPage.Icon>
                    <OnPlatform x:TypeArguments="FileImageSource">
                        <On Platform="iOS" Value="tab_feed.png"/>
                    </OnPlatform>
                </NavigationPage.Icon>
                <x:Arguments>
                    <views:StockTransfer />
                </x:Arguments>
            </NavigationPage>
        </MasterDetailPage.Detail>

    </MasterDetailPage>

标签: xamarin.forms

解决方案


在这里,您使用模态导航,而不是分层.

根据 Microsoft 文档:Hierarchical Navigation,它说:

NavigationPage 类提供分层导航体验,用户可以根据需要在页面中向前和向后导航。

要导航到页面,需要在当前页面的 Navigation 属性上调用 PushAsync 方法。

因此,您必须使用PushModalAsync(...)方法将代码更改为PushAsync(...).


推荐阅读