2016-11-22 16 views
0

私はマスター詳細ページとその中のナビゲーションページを使用しているアプリを持っています。 Androidの場合、バーガーメニューを使用してアカウントページに移動すると、ナビバーは画面上部に表示されたままになり、使用できるようになります。 iOS上ではナビゲーションバーが消えるので、バーガーメニューアイコン付きのカスタムバーを作成しました。誰かがカスタムナビゲーションバーのアイコンをクリックすると、バーガーメニューが左からスワイプします。Xamarinフォームの使用 - ボタンをクリックしてスワイプジェスチャーにするにはどうすればよいですか?

バーガーアイコンにジェスチャ認識子を付けましたが、呼び出されたメソッドにスワイプアクションを実行するために何を入れるべきかわかりません。

2ページのナビゲーションバー:

<StackLayout IsVisible="{Binding _isiPhone}" Orientation="Horizontal" BackgroundColor="#008334"> 
    <Image Source="burger.png" HorizontalOptions="StartAndExpand"> 
     <Image.GestureRecognizers> 
      <TapGestureRecognizer Tapped="Burger_Clicked"></TapGestureRecognizer> 
     </Image.GestureRecognizers> 
    </Image> 
</StackLayout> 

イベントハンドラ:

private void Burger_Clicked(object sender, EventArgs e) 
{ 
} 

アンドロイドビュー:

android view

アンドロイドバーガーメニュービュー:

android burger menu

(カスタムナビゲーションバー付き)のiOSビュー:

iOS view

のiOSバーガーメニュー:

iOS burger menu

答えて

0

あなたがにMasterDetailページの "IsPresented" プロパティを設定することができますTrue/Falseを指定すると、サイドメニューが表示/非表示になります。 標準のコントロールはユーザーの慣れ親しんだものでなければならないため、カスタムバーが本当に必要かどうか再考してください。

また、マスターページのコンテンツページを使用することをお勧めします。また、詳細ページに必要に応じてNavigationPage/TabPage/ContentPageを使用することもできます。

は申し訳ありませんが、内部のページはコンテンツページではないナビゲーション・ページで詳しく

+0

ためofficial docsを参照してください。 アカウントページからIsPresentedプロパティにアクセスする方法がわかりません。 – NinjaFocks

+0

Application.Current.MainPageをMasterDetailPageにキャストできます。だから((MasterDetailPage)Application.Current.MainPage).IsPresented = true;スライドアウトの引き出しが表示されます。 もちろん、このコードがトリガーされたときにMasterDetailPageが常にアプリケーションのルートにある場合にのみ、この方法を使用してください。あなたのプロジェクトに合っていて、アプリケーションアーキテクチャで最もクリーンで簡単な解決策であれば、それをテストしたり、別の方法でリファレンスを保存する必要があります。 – irreal

関連する問題