在Xamarin.Forms中使用MasterDetailPage时,它在Android中的行为与预期相同。就像普通的导航抽屉一样。请注意滑入式机构的正确行为以及汉堡按钮的正确位置。菜单中的按钮也很好用。
以下是一些代码摘录:
App.xaml.cs
public partial class App : Application
{
public App()
{
MainPage = new NavigationPage(new MenuPage());
}
...
MenuPage.xaml
<?xml version="1.0" encoding="utf-8" ?>
<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="WordDeck.MenuPage"
xmlns:local="clr-namespace:WordDeck;assembly=WordDeck"
Title="WordDeck."
MasterBehavior="Default">
<MasterDetailPage.Master>
<ContentPage Title="Menu">
<StackLayout Orientation="Vertical">
<Button Text="Neues Spiel"
Clicked="MainPage_Clicked"></Button>
<Button Text="Deck Verwaltung"
Clicked="DeckManager_Clicked"></Button>
</StackLayout>
</ContentPage>
</MasterDetailPage.Master>
<MasterDetailPage.Detail>
<local:MainPage></local:MainPage>
</MasterDetailPage.Detail>
</MasterDetailPage>
MenuPage.xaml.cs
public partial class MenuPage : MasterDetailPage
{
public MenuPage()
{
InitializeComponent();
}
private void MainPage_Clicked(object sender, EventArgs e)
{
Detail = new MainPage();
Title = "WordDeck.";
IsPresented = false;
}
private void DeckManager_Clicked(object sender, EventArgs e)
{
Detail = new DeckManagerPage();
Title = "Deck Verwaltung";
IsPresented = false;
}
}
MainPage和DeckManagerPage几乎为空,类型为ContentPage。
为什么UWP上没有菜单按钮?
答案 0 :(得分:2)
这是因为您将UWP应用程序作为桌面应用程序运行,而不是在手机上运行。如果您在手机或模拟器上运行应用程序,则应该看到Android上的菜单。
如果您想在MasterDetailPage上作为桌面应用程序集MasterBehavior = MasterBehavior.Popover
运行时使用汉堡包行为
答案 1 :(得分:1)
主要问题是桌面上的IsPresented隐藏了抽屉。 处理此问题的一种方法是不要隐藏在桌面或平板电脑上。
例如......
// Called from each Clicked Event
private void SetPresentedVisability()
{
switch (Device.Idiom)
{
case TargetIdiom.Phone:
IsPresented = false;
break;
case TargetIdiom.Desktop:
case TargetIdiom.Tablet:
case TargetIdiom.Unsupported:
IsPresented = true;
break;
}
}
或者,您可以忽略任何非手机IsPresented设置。
IsPresented = (Device.Idiom == TargetIdiom.Phone) ? false : true;