推入导航页面时导航失去了菜单

时间:2019-05-20 22:55:40

标签: xamarin.forms

我有一个内容页面,如下所示并显示,但是我在使用以下内容推送汉堡包菜单时失去了菜单。我正在使用xamrian中的标准主细节应用程序。

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

    <?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>

1 个答案:

答案 0 :(得分:0)

此处您使用的是 modal 导航,而不是 hierarchical

根据Microsoft文档:Hierarchical Navigation,它表示:

  

NavigationPage类提供了分层的导航体验,用户可以根据需要在页面之间进行前后导航。

     

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

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