2016-07-26 153 views
0

我剛從Xamarin表單開始,並跟着this的例子。但對於橫向模式,它總是打開導航抽屜。這是默認行爲嗎?下面是我的代碼關閉Xamarin表單導航抽屜

public class NavigationDrawer : MasterDetailPage // Navigation Drawer using MasterDetailPage 
{ 
    public override bool ShouldShowToolbarButton() 
    { 
     return true; 
    } 

    ContentPage gotoPage; 
    public NavigationDrawer() 
    { 

     Title = "Navigation Drawer Using MasterDetailPage"; 
     string[] myPageNames = { "Camera2 Demo", "Second", "Third" }; 
     SizeChanged += NavigationDrawer_SizeChanged; 
     ListView listView = new ListView 
     { 
      ItemsSource = myPageNames, 
     }; 
     this.Master = new ContentPage 
     { 
      Title = "Options", 
      Content = listView, 
      Icon = "hamburger.png" 
     }; 

     listView.ItemTapped += (sender, e) => 
     { 

      switch (e.Item.ToString()) 
      { 
       case "Camera2 Demo": 
        gotoPage = new CameraPage(); 
        break; 
       case "Second": 
        gotoPage = new SecondPage(); 
        break; 
       case "Third": 
        gotoPage = new ThirdPage(); 
        break; 
       default: 
        gotoPage = new NavigationPage1(); 
        break; 
      } 

      Detail = new NavigationPage(gotoPage); 
      ((ListView)sender).SelectedItem = null; 
      this.IsPresented = true; 

     }; 

     Detail = new NavigationPage(new HomePage()); 
     IsPresented = false; 

     //// For Windows Phone, provide a way to get back to the master page. 
     //if (Device.OS == TargetPlatform.WinPhone) 
     //{ 
     // (this.Detail as ContentPage).Content.GestureRecognizers.Add(
     //  new TapGestureRecognizer((view) => 
     //  { 
     //   this.IsPresented = true; 
     //  })); 
     //} 
    } 

問題

1)我將如何控制導航抽屜的開啓和關閉?我找到了一種方法可以讓我們控制導航抽屜的寬度。 Here是鏈接。但這是現在最好的選擇嗎?

1)由於項目需要跨平臺Xamarin表單控件似乎是其中一個選項。

2)我們應該與自定義控件一起去,而不是Xamarin形式的控件?

我剛開始使用Xamarin示例代碼將不勝感激,如果有人可以指導我通過這個。

回答

1

您需要在MasterDetailPage上設置MasterBehavior = MasterBehavior.Popover以強制它展現出您之後的行爲,否則它將默認爲MasterBehavior.Default,在橫向模式下它將始終打開。

1

1)如何控制導航抽屜的打開和關閉?

使用this.IsPresented = true;打開並this.IsPresented = false;關閉抽屜。 關於其他問題我不明白你的好,但根據你的要求,你應該創建自定義控件或從NuGet下載。

注:
我相信對於初學者,最重要的是學會如何使用DependencyService實現原生代碼,同時也使用設計模式,如MVVM