2016-05-26 9 views
0

私はxamarin.formsで働いています。私はアンドロイドアプリケーションを作成しています。私のアプリケーションでは、メニューを使用する必要があります。だから私はマスターの詳細ページを表示してメニューを表示しました。そして、それはうまく動作します。内容ページの後にマスターの詳細ページが表示されない

しかし、私の問題は、マスターの詳細ページを表示する前に、私はメニューが含まれていないコンテンツページを開く必要があります。だから、私はコンテンツページをとり、それを設定しました。しかし、コンテンツページの後にアプリケーションを実行すると、マスターの詳細ページが表示されません。コードは正常に実行されていますが、マスターページは表示されません。

単純なコンテンツページを表示した後、マスターの詳細ページをどのように表示することができますか?

答えて

0

あなたにトリックを与える!ログインページがあるとします。認証後に、masterDetailPageであるRootPageに移動します。

はコード

namespace LoginNavigation 
{ 
    public class App : Application, IloginInterface 
    { 
     public static App current; 
     public static bool IsUserLoggedIn { get; set; } 
     public static double ScreenWidth; 
     public static double ScreenHeight; 

     public App() { 
      current = this; 
      MainPage = new LoginPageWithStack(); 
     } 

     public void Logout() { 
      MainPage = new LoginPageWithStack(); 
     } 

     public void ShowMainPage() { 
      MainPage = new RootPage(); 
     } 
    } 
} 

rootPage下からからヒントを取る:

namespace LoginNavigation 
{ 
    public class RootPage:MasterDetailPage 
    { 
     MenuPage menuPage; 


     public RootPage() { 
      ToolbarItems.Add(new ToolbarItem("Filter", "ring.png", async() => { 
       var page = new ContentPage(); 
       var result = await page.DisplayAlert("Title", "Message", "Accept", "Cancel"); 
       Debug.WriteLine("success: {0}", result); 
      })); 

      menuPage = new MenuPage(); 

      menuPage.Menu.ItemSelected += (sender, e) => NavigateTo (e.SelectedItem as MenuItemForMaster); 

      //Master = new MasterMenu(); 
      Master = menuPage; 
      Detail = new NavigationPage (new TimeSheet()){ 
       BarBackgroundColor = Color.FromHex("008dce"),BackgroundColor = Color.FromHex("008dce") 
      }; 
     } 

     void NavigateTo (MenuItemForMaster menu) { 
      if (menu == null) 
       return; 

      Page displayPage = (Page)Activator.CreateInstance (menu.TargetType); 
      //Detail = displayPage; 
      Detail = new NavigationPage (displayPage) { BarBackgroundColor = Color.FromHex("008dce"),BackgroundColor = Color.FromHex("008dce")}; 

      menuPage.Menu.SelectedItem = null; 
      IsPresented = false; 
     } 
    } 
} 

だから、トリックは、Appクラスの現在のインスタンスを取得し、それをメインページプロパティを操作する、です。

+0

私はそれを試しましたが、まだ動作していません。コンテンツページの後でマスター詳細ページに移動できるように、App.csで記述する必要がある特定のコードを更新してください。 – anand

2

答えは、ナビゲーションスタックを維持するかどうかによって異なります。あなたは、新しいページにナビゲーションスタックのルートを作りたいなら、あなたが必要とする

((NavigationPage)Parent).PushAsync(newPage); 

:あなたは、現在のナビゲーションスタックに新しいページを追加したい場合、あなたはそうするために、コンテンツページでは、このようなものが必要

((App) Parent).MainPage = newPage; 

これがうまくいかない場合は、コードを投稿してください。

+0

Christineさん、ありがとうございました。私はApp.Current.MainPage = newPageを使いました。 – anand

関連する問題