2016-04-28 58 views
4

我是新的Xamarin表單(並在棱鏡以及)我試圖創建我的第一個Xamarin表單應用程序,並需要登錄流。Xamarin表單+棱鏡登錄流程

我試圖檢查用戶是否登錄了application.OnInitialized方法(並根據結果顯示登錄或主頁面)。但問題是,如果我顯示登錄頁面,然後登錄後,我顯示主頁面,然後用戶可以導航到登錄頁面使用硬件按鈕..

然後我試圖檢查在OnNavigationTo在主頁面,但它也不工作。我在PRE版本和穩定版本中檢查過,並且有不同的錯誤。在其中一個導航只是沒有工作,在其他 - 我有一個錯誤,主頁無法創建。

然後我試圖將導航服務注入MainPage(不是視圖模型),但我發現導航服務無法注入到那裏。

然後我決定從base.OnAppearing和訂閱該消息在視圖模型中發送消息,並做導航登錄如果需要作爲回調。但是有一個非常奇怪的問題。如果我在MainPage上使用ToolBarItems,那麼在Windows Phone上,它會從登錄頁面導航回來後消失(但突然,在windows phone上的登錄頁面上有工具欄項目),看起來像在工具欄項目加載之前,Windows Phone上的OnAppearing方法觸發。無論如何,這不是一個解決方案。

然後我決定添加一個空白頁面並在base.on之後發送一條消息進入視圖模型,並在該視圖模型內部重定向到Login或主頁面。所以,它適用於一個小的「BUT」。如果我按登錄頁面或主頁面上的硬件返回按鈕,我不會關閉應用程序,因爲我導航到將頁面重定向到登錄頁面或主頁面的空白頁面。

有沒有適當的方法來實現使用棱鏡登錄流程?我真的很喜歡它,因爲它是非常強大的框架.. 在此先感謝!

回答

3

請記住,OnNavigatedTo僅在使用最新預覽版本並調用NavigationService.Navigate時起作用。有幾種方法可以採取。首先,您可以導航到MainPage,然後檢入OnNavigatedTo。如果未登錄,請導航到LoginPage。你也可以檢查應用程序啓動。當您顯示LoginPage時,您可以使用絕對URI來替換整個導航堆棧。基本上這是設置MainPage = new MainPage()。

+0

非常感謝Brian! – Denis