Xamarin MasterDetailPage:UWP/Android上的不同行为

Xamarin MasterDetailPage:UWP/Android上的不同行为,xamarin,xamarin.forms,Xamarin,Xamarin.forms,在Xamarin.Forms中使用MasterDetailPage时,其行为与Android中的aspected相同。就像一个普通的导航抽屉。请注意滑入机构的正确行为和汉堡按钮的正确位置。菜单上的按钮也很好用 UWP应用程序看起来像这样。请注意,没有汉堡按钮: 点击菜单按钮后,菜单消失,无法取回: 以下是一些代码摘录: App.xaml.cs public partial class App : Application { public App() { Ma

在Xamarin.Forms中使用MasterDetailPage时,其行为与Android中的aspected相同。就像一个普通的导航抽屉。请注意滑入机构的正确行为和汉堡按钮的正确位置。菜单上的按钮也很好用

UWP应用程序看起来像这样。请注意,没有汉堡按钮:

点击菜单按钮后,菜单消失,无法取回:

以下是一些代码摘录:

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>
MainPage和DeckManagerPage几乎为空,类型为ContentPage


为什么UWP上没有菜单按钮?

这是因为您将UWP应用程序作为桌面应用程序运行,而不是在手机上运行。如果你在手机或模拟器上运行应用程序,你会看到Android上的菜单


如果您想在作为桌面应用程序运行时使用汉堡包行为,请在MasterDetailPage上设置
MasterBehavior=MasterBehavior.Popover
,这是因为您将UWP应用程序作为桌面应用程序运行,而不是在手机上运行。如果你在手机或模拟器上运行应用程序,你会看到Android上的菜单


如果要在作为桌面应用程序运行时使用汉堡包行为,请在MasterDetailPage上设置
MasterBehavior=MasterBehavior.Popover
,主要问题是桌面上显示的信息隐藏了抽屉。 处理这个问题的一种方法是不要隐藏在桌面或平板电脑上

例如

// 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 = (Device.Idiom == TargetIdiom.Phone) ? false : true;

主要问题是桌面上的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 = (Device.Idiom == TargetIdiom.Phone) ? false : true;

也许你需要更新你的Xamarin.Forms nuget包?我只需要上面的大部分代码,我有一个汉堡包菜单,我可以折叠并打开菜单。我正在运行Windows10UWP作为测试。它似乎工作正常。也许你需要更新你的Xamarin.Forms nuget包?我只需要上面的大部分代码,我有一个汉堡包菜单,我可以折叠并打开菜单。我正在运行Windows10UWP作为测试。它似乎工作得很好。