私は以前MVVM Lightを使用していませんでしたが、私はXamarinフォームの経験がかなりあります。以前はMVVM Crossをナビゲーションに使用していましたが、Xamarin Forms Navigationで構築されたものがはるかに優れていることがわかりました。ここにあるものと同様のシナリオに遭遇しました。
MVVMライトがちょうどXamarinはとにかくナビゲーションフォームラップしているように見えるフードの下
- 私はあなたがMVVMライトナビゲーションにあきらめる必要があると思いませんが、あなたが達成するためにボンネットの下に取得する必要がありますhttp://mvvmlight.codeplex.com/SourceControl/latest#Samples/Flowers/Flowers.Forms/Flowers.Forms/Helpers/NavigationService.cs
3つの遷移を見ることなくナビゲーション。私はMVVM Lightでこれを試していませんが、通常のフォームナビゲーションでうまく動作します。
ステップ1
基礎となるXamarinフォームナビゲーションへのアクセスを取得します。
var navigation = Application.Current.MainPage.Navigation;
ステップ2
あなたが戻ってナビゲートするときにスキップしたい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();
私はそれがあなたのために働く願っています。
代替検討
私はもう少しエレガントに解決してきた私のアプリで同様のアプリケーションを持っています。あなたが知っていれば、前のページに戻ってナビゲートする必要はありません。新しいページをオンにすると、不要になったページを削除することができます。の後にページを削除しなければならないことに注意してください。そうしないと、2つのトランジションが発生します。私は標準の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);
}
しかし – Veeravel
が、我々は移行せずに戻って3回行くことができれば、それが可能それが良いだろうトランジションをカットし、別の1がAtleastのトップ – Veeravel
にプッシュされるようにそれが見えるようにすることです悪くtransistionません – Veeravel