2016-11-07 10 views
1

私はXamarinフォームを使用していますが、MasterDetailPageとNavigationPageを使用しています。今、すべてのビューでページボタン(左側の3つのバー)を表示するように設定する必要があります。すべてのビューでナビゲーションページのボタンを表示する方法Xamarinフォーム

私はメニュー付きのMasterDetailPageを持っており、ユーザーはメニューをクリックして他のページに移動します。最初のページ(ホームページ)は次のようになります。

<MasterDetailPage.Detail> 
    <NavigationPage> 
     <x:Arguments> 
      <home:HomePage /> 
     </x:Arguments> 
    </NavigationPage> 
</MasterDetailPage.Detail> 

enter image description here

はmasterdetailpageまたはmasterdetailpage外の他のメニュー内のメニューでユーザーがクリックは、それがナビゲーションを行う場合:

enter image description here

3棒のページボタンは、最初のビューでのみ表示されます。他のビューに移動すると、そのボタンは消えます。私は他のページに移動したときに

enter image description here

ページのバックボタンshownsが自動的にそれは大丈夫です:

はしかし、私はそのような何かをしたいです。

3つのバーのページボタンをすべてのビューで表示し、バックページボタンを維持する方法を教えてください。

私は、ビュー間を移動するには、次のコードを使用しています:

await Navigation.PushAsync(MyNewPage()); 

ありがとう!

答えて

1

これはできません。左側に2つのボタンがありません。そして私が見た多くのアプリケーションは、この種のUIをサポートするアプリケーションはありません。あなたがカスタムナビゲーションバーを書いて、すべてのページの上に置かない限り。

メインのMasterDetailPageに詳細ページのスタックを作成できます。したがって、新しいページをプッシュしたいときはいつも、ページを詳細として設定し、古いディテールを独自のスタックに配置することができます。

Androidの場合は、ボタンイベントを折り返してスタックからポップすることができますが、iOSでは戻るボタンがないため、詳細ページのツールバーに戻るボタンを作成する必要があります。

+0

のintersting ...、私は今のことをしようとします! –

+0

今、私は2つのツールバーがあり、もう1つは欲しくないです。 –

+0

誰が使っているのですか? –

1

マスター詳細ページでは、詳細ページへのナビゲーションが正しく機能するように処理する必要があります。

メニューリストビューを接続:

  • ListView.ItemSelected + = OnItemSelected。

OnItemSelectedイベントです。

  • {MasterDetailPage} .Detail.Navigation。PushAsync(新しいMyNewPage());ここで

マスター・ディテール・ナビゲーションの例である:

async void OnItemSelected(object sender, SelectedItemChangedEventArgs e) 
    { 
     var item = e.SelectedItem as MasterPageItem; 

     if (item != null) 
     {     
      NavigationPage nextDetailPage = null; 
      await Task.Run(() => 
      {      
       nextDetailPage = new NavigationPage((Page)Activator.CreateInstance(item.TargetType));     
      }); 
      Detail = nextDetailPage; 
      masterPage.ListView.SelectedItem = null; 
      IsPresented = false;     
     } 
    } 
+0

持っている: が待ってます((MasterDetailPage)Application.Current.MainPage).Detail.Navigation.PushAsync(App.ClientesPage) –

+0

私はmasterdetailpage外のボタンから移動しようとしています。上記のコードは同じ動作をしています。以下のコードを試してみたら、2つのツールバーが表示されます...(MasterDetailPage)Application.Current.MainPage).Detail.Navigation.PushAsync(新しいNavigationPage(App.ClientesPage)) –

1

は、私はあなたが望むものを達成するためのカスタムレンダラを記述する必要がありますと思います。 しかし、あなたは唯一のバックボタンなしで、ハンバーガーのボタンを維持したい場合は、このコードを使用して、あなたのページに移動することができます

Detail = new NavigationPage(new MyNewPage()); 
+0

ありがとうございます。別のユーザーが私に言った、しかし、私は本当に毎回ナビゲーションページの別のインスタンスを作成せずに両方のボタンを使用する必要があります。カスタムレンダリングを作成するにはiOS用とAndroid用の2つのコードを書く必要がありますが、それは多くの作業ですが...私は試してみます! –

関連する問題