我在做xamarin開發,我沒有做表格。如何返回mvvm燈中的多個視圖模型
我想3 viewcontrollers /活動回去,但GoBack的方法是通過一個視圖控制器或活動
回去如果我使用的NavigateTo我認爲一個更多的時間viewcontrolller /活動得到added.i.e兩個實例。
那麼如何解決這個問題呢?
更新: 這裏是inavigation接口是沒有辦法訪問THR導航堆棧以及
我在做xamarin開發,我沒有做表格。如何返回mvvm燈中的多個視圖模型
我想3 viewcontrollers /活動回去,但GoBack的方法是通過一個視圖控制器或活動
回去如果我使用的NavigateTo我認爲一個更多的時間viewcontrolller /活動得到added.i.e兩個實例。
那麼如何解決這個問題呢?
更新: 這裏是inavigation接口是沒有辦法訪問THR導航堆棧以及
如果你回去,然後使用INavigationService.GoBack();
。你可以連續調用3次返回3頁。
private void GoBackThree()
{
_navigationService.GoBack();
_navigationService.GoBack();
_navigationService.GoBack();
}
我以前沒有使用過MVVM Light,但是我有相當多的Xamarin Forms的經驗。我曾經使用MVVM Cross進行導航,但最終發現內置的Xamarin表單導航要好得多,我遇到了類似的情況,就像你在這裏所做的一樣。
下,它看起來像MVVM光只是包裹Xamarin引擎蓋窗體導航反正 - http://mvvmlight.codeplex.com/SourceControl/latest#Samples/Flowers/Flowers.Forms/Flowers.Forms/Helpers/NavigationService.cs
我不認爲你需要放棄對MVVM燈導航,但你確實需要引擎蓋下得到實現導航沒有看到三個轉換。我還沒有嘗試過MVVM Light,但它對正常的窗體導航非常有用。
步驟1
到底層Xamarin可以訪問窗體導航:
var navigation = Application.Current.MainPage.Navigation;
步驟2
刪除要導航回來時跳過兩頁。在向後導航之前將它們刪除非常重要,否則您將會發生雙重轉換(請注意-2是因爲您要刪除倒數第二頁)。
var firstPageToRemove = navigation.NavigationStack[navigation.NavigationStack.Count - 2];
navigation.RemovePage(firstPageToRemove);
var secondPageToRemove = navigation.NavigationStack[navigation.NavigationStack.Count - 2];
navigation.RemovePage(secondPageToRemove);
步驟3
導航向後
_navigationService.GoBack();
我希望你的作品。
另類思考
我有我的應用程序類似的應用程序,我已經解決了一點點更優雅。如果你知道你永遠不需要能夠回到那些先前的頁面。當你推新頁面時,如果你不再需要它,你實際上可以刪除以前的頁面。請注意,您必須在之後刪除頁面,然後再按下新的頁面,否則您將得到兩個轉換。我在標準的Forms Navigation上使用這種擴展方法,我向您展示瞭如何在步驟1中訪問以實現它。
public static async Task ReplaceCurrentAsync(this INavigation navigation, Page page, bool animated = false)
{
var curentPage = navigation.NavigationStack.Last();
await navigation.PushAsync(page, animated);
navigation.RemovePage(curentPage);
}
但不會transistion看壞 – Veeravel
是否有可能削減過渡,並使它看起來像另外一個是在頂部 – Veeravel
ATLEAST推,如果我們能去無迴轉型3次,它會是不錯的 – Veeravel