我有一个Xamarin Forms项目,目标是Android,IOS和UWP。
在我的Xamarin.Forms项目App.cs中,我已将MainPage设置为继承自MasterDetailPage的类。
我创建了一个自定义导航栏,因此不想看到默认的导航栏。
我按照这个问题中的步骤隐藏了IOS和Android的默认栏。 现在我也想隐藏UWP的默认栏。
我尝试在Xamarin Forms项目中:
在UWP项目中(我尝试了分开和同时操作):
但是没有任何帮助,所以在UWP中我仍然看到两个菜单按钮。在图片中,我想隐藏灰色按钮(以及它所属的栏)。
如果我将App.cs中的MainPage设置为NavigationPage而不是使用MasterDetailPage,则以下代码可帮助删除该栏:
如何使用MasterDetailPage解决这个问题?
谢谢您的帮助!
编辑:添加了代码。
我在MainPage和MenuPage中看到导航栏。称为Menubar的StackLayout是我想要看到的顶部唯一的栏。
我按照这个问题中的步骤隐藏了IOS和Android的默认栏。 现在我也想隐藏UWP的默认栏。
我尝试在Xamarin Forms项目中:
NavigationPage.SetHasNavigationBar(this, false);
在UWP项目中(我尝试了分开和同时操作):
Windows.UI.ViewManagement.StatusBar.GetForCurrentView().HideAsync();
Windows.UI.ViewManagement.ApplicationView.GetForCurrentView().TryEnterFullScreenMode();
Windows.UI.ViewManagement.ApplicationView.GetForCurrentView().SuppressSystemOverlays = true;
但是没有任何帮助,所以在UWP中我仍然看到两个菜单按钮。在图片中,我想隐藏灰色按钮(以及它所属的栏)。
如果我将App.cs中的MainPage设置为NavigationPage而不是使用MasterDetailPage,则以下代码可帮助删除该栏:
NavigationPage.SetHasNavigationBar(this, false);
如何使用MasterDetailPage解决这个问题?
谢谢您的帮助!
编辑:添加了代码。
我在MainPage和MenuPage中看到导航栏。称为Menubar的StackLayout是我想要看到的顶部唯一的栏。
App.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace AddressReadApp2
{
public class App : Application
{
public App()
{
MainPage = new MasterDetail();
NavigationPage.SetHasNavigationBar(this, false);
NavigationPage.SetHasNavigationBar(MainPage, false);
}
protected override void OnStart()
{
// Handle when your app starts
}
protected override void OnSleep()
{
// Handle when your app sleeps
}
protected override void OnResume()
{
// Handle when your app resumes
}
}
}
MasterDetail.cs:
namespace AddressReadApp2
{
public class MasterDetail : MasterDetailPage
{
public MasterDetail ()
{
NavigationPage.SetHasNavigationBar(this, false);
Detail = new NavigationPage(new MainPage());
NavigationPage.SetHasNavigationBar(Detail, false);
BackgroundColor = Color.FromRgb(0, 170, 167);
Title = "ibi";
Master = new MenuPage();
MasterBehavior = MasterBehavior.Popover;
}
}
}
MenuPage.xaml.cs:
namespace AddressReadApp2.Pages
{
public partial class MenuPage : ContentPage
{
MasterDetail __parent = null;
MasterDetail _parent
{
get
{
if (__parent == null)
__parent = (MasterDetail)this.Parent;
return __parent;
}
}
MainPage __detail;
MainPage _detail
{
get
{
if (__detail == null && _parent != null)
__detail = (MainPage)((NavigationPage)_parent.Detail).CurrentPage;
return __detail;
}
}
public MenuPage()
{
NavigationPage.SetHasNavigationBar(this, false);
Title = "ibi";
//Icon = "ibi_logo.png";
InitializeComponent();
this.BackgroundColor = Color.FromRgb(0, 170, 167);
menu.GestureRecognizers.Add(new TapGestureRecognizer { Command = new Command(() => _parent.IsPresented = !_parent.IsPresented) });
Device.OnPlatform(
iOS: () =>
{
MenuBar.Padding = new Thickness(0, 25, 0, 0);
}
);
}
}
MenuPage.xaml:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="AddressReadApp2.Pages.MenuPage">
<StackLayout Orientation="Vertical" VerticalOptions="FillAndExpand">
<StackLayout x:Name="MenuBar" Orientation="Horizontal">
<Image x:Name="menu" Source="menu.png" HeightRequest="35" WidthRequest="35" HorizontalOptions="Start" Margin="10,2,0,0" />
<Image x:Name="logo" Source="ibi_logo2.png" HeightRequest="35" WidthRequest="35" HorizontalOptions="EndAndExpand" Margin="0,0,10,2" />
</StackLayout>
<Grid RowSpacing="2" ColumnSpacing="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="50" />
</Grid.RowDefinitions>
<!-- Between here are Labels for the menu -->
</Grid>
</StackLayout>
</ContentPage>
MainPage.xaml.xs:
namespace AddressReadApp2
{
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
NavigationPage.SetHasNavigationBar(this, false);
MenuBar.BackgroundColor = Color.White;
menu.GestureRecognizers.Add(new TapGestureRecognizer { Command = new Command(() => ((MasterDetailPage)Parent.Parent).IsPresented = true) });
}
}
}
MainPage.xaml:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="AddressReadApp2.MainPage" BackgroundColor="White" NavigationPage.TitleIcon="icon.png" x:Name="MainPage">
<StackLayout x:Name="mainStack" Orientation="Vertical" VerticalOptions="FillAndExpand">
<StackLayout x:Name="MenuBar" Orientation="Horizontal">
<Image x:Name="menu" Source="menu2.png" HeightRequest="35" WidthRequest="35" HorizontalOptions="Start" Margin="10,2,0,0" />
<Image x:Name="logo" Source="ibi_logo.png" HeightRequest="35" WidthRequest="35" HorizontalOptions="EndAndExpand" Margin="0,0,10,2" />
</StackLayout>
<StackLayout x:Name="pnlStart" Orientation="Vertical" VerticalOptions="Fill" HorizontalOptions="Fill">
<StackLayout x:Name="pnlWelcome" VerticalOptions="End" Padding="10">
<Label Text="Welcome" VerticalOptions="Center" HorizontalOptions="Center" FontSize="25" />
</StackLayout>
</StackLayout>
</StackLayout>
</ContentPage>