2016-07-26 14 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フォームコントロールがオプションの1つと考えられます。

2)Xamarinフォームコントロールではなく、カスタムコントロールを使用する必要がありますか?

私はXamarinで始まったばかりです。サンプルコードは、誰かが私をこのように導くことができれば分かります。

答えて

1

あなたはそれ以外の場合は風景モードでは常に開かれている、MasterBehavior.Defaultにデフォルト設定されます、あなたが後にある挙動を示すためにそれを強制的にMasterDetailPageにMasterBehavior = MasterBehavior.Popoverを設定する必要があります。

1

1)ナビゲーション・ドロワーの開閉をどのように制御できますか?

this.IsPresented = true;を開き、this.IsPresented = false;を使用して引き出しを閉じます。 他の質問について私はあなたのことをよく理解していませんが、要件に応じてカスタムコントロールを作成するか、NuGetからダウンロードする必要があります。

注:
私は初心者のために最も重要なことはDependencyServiceを使用してネイティブコードを実装する方法を学び、またMVVMのようなデザインパターンを使用することであると信じています。

関連する問題