2016-10-30 3 views
1

Xamarin.Forms에서 MasterDetailPage를 사용하면 Android에서 aspected로 작동합니다. 일반 탐색 용 서랍과 같습니다. 슬라이드 인 메커니즘의 올바른 동작과 햄버거 버튼의 올바른 위치를 확인하십시오. 메뉴의 버튼도 훌륭하게 작동합니다.MasterDetailPage : UWP/Android에서 다른 동작

enter image description hereenter image description here

는 UWP 앱은 다음과 같습니다. 그것을 다시 얻을 수 enter image description here

메뉴 버튼에 klicking 후, 메뉴 가능성없이 사라 :

: 여기 enter image description here

몇 가지 코드 발췌 공지 사항, 아니 햄버거 버튼이 없다

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

아마도 Xamarin.Forms Nuget 패키지를 업데이트해야합니까? 방금 위의 코드를 대부분 가져 왔고 햄버거 메뉴가 있으며 메뉴를 접고 열 수 있습니다. Windows 10 UWP를 테스트 중입니다. 잘 작동하는 것 같습니다. –

답변

1

UWP 앱을 휴대 전화가 아닌 데스크톱 앱으로 실행하기 때문입니다. 휴대 전화 나 에뮬레이터에서 앱을 실행하는 경우 Android에서와 같이 메뉴가 표시됩니다.

데스크톱 앱이 MasterDetailPage

0

MasterBehavior = MasterBehavior.Popover 설정으로 실행 할 때 햄버거 동작을 사용하려는 경우 가장 큰 문제는 바탕 화면에 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;