2014-11-24 70 views
1

我正試圖從一個ContentPage導航到另一個。 在我WelcomePage,我有一個按鈕,它應該給我去其他的頁面內容如下現在如何從ContentPage導航到ContentPage?

 _loginButton.Clicked += (s, e) => 
      { 
       if (OnLoginEnter != null) OnLoginEnter(); 
      }; 

,在我PageManager班,在那裏我試着來管理所有的網頁,我有這樣的事情

public class PageManager : Page 
{ 
    #region Fields 
    public static WelcomePage WelcomePage = new WelcomePage(); 
    public static LoginPage LoginPage = new LoginPage(); 
    #endregion 

    public Page GetStarted() 
    { 
     return WelcomePage.Generate(); 
    } 
} 

最後,在MainActivity.cs(Android項目),我想用下面來管理這一切:

//I have to use a method for that for some reason. Can't call .Generate() directly. 
SetPage(PageManager.GetStarted()); 
PageManager.WelcomePage.OnLoginEnter +=() => 
    { 
     SetPage(PageManager.LoginPage.Generate()); 
    }; 

我覺得這很混亂,沒有什麼效果。 我想要的是一種從一個ContentPage導航到另一個的方法。從Xamarin.Forms documation採取here

listView.ItemSelected += async (sender, e) => { 
    var todoItem = (TodoItem)e.SelectedItem; 
    var todoPage = new TodoItemPage(todoItem); // so the new page shows correct data 
    await Navigation.PushAsync(todoPage); 
}; 

所以你

回答

0

回答的話,大概是這個樣子:

PageManager.WelcomePage.OnLoginEnter +=() => 
    { 
     await Navigation.PushAsync(PageManager.LoginPage.Generate()); 
    }; 

對於iOS,您將需要通過NavigationPage做到這一點如下所示(示例位於AppDelegate.cs文件中)

window.RootViewController = new NavigationPage (new MyLoginForm()).CreateViewController(); 

之後,您可以在應用程序中的任何ContentPage內調用await Navigation.PushAsync('您想要的任何頁面')。

+0

除非我使用'NavigationPage',否則'Navigation'不可用。 – Saphire 2014-11-26 08:21:27

+0

那麼就使用NavigationPage吧。請參閱上面的編輯以瞭解如何設置它。 – eckyzero 2014-11-26 15:01:50

1

我分享你的失望 - 然而,我明白Xamarin正在改善頁面導航。

現在,您有幾個選擇。

如果你很高興有一個流程,所以不需要替換整個頁面,但能夠返回,使用NavigationPage或PageManager提到的echyzero。

如果您打算選擇一個頁面,請使用MasterDetailPage並替換詳細信息。

或者,創建一個名爲SetRootPage的方法併爲Android和iOS實現它的接口。在啓動時將接口實例傳遞給App.Run(IPageLoader),然後可以從App類調用SetRootPage來替換Root。我剛纔報告了一個錯誤,現在可能已經修復了。同時,我的解決方法是使用CarouselPage,在Carousel上只有一個頁面,當需要時我會替換它 - 實際上它工作得很好,如果有點不好意思。

+0

他們真的需要簡化這一點。我會給旋轉木馬的想法一個鏡頭。 – Saphire 2014-11-26 08:12:25

相關問題