2017-11-16 4 views
0

UWPアプリケーションをXamarin Formsに移行することを検討しています。ユーザーがナビゲートしたときに注文フォームなどの複雑なオブジェクトの状態を保存し、ユーザーがナビゲートしたときにその状態を取得できるようにする必要があります。また、ビューモデルからのナビゲーションをキャンセルする必要があります。Xamarinフォームのプリズム状態の維持と取得

私はMVVMを使用していますので、私の質問はその文脈からですが、私たちはそのようなことについて熱心ではなく実用的だと思っています。

UWPでは、Template10ライブラリを使用してOnNavigatingFromイベントに状態を保存します。 OnNavigatingToイベントで状態を取得します。これは、アプリの戻るボタンをクリックしても機能します。

Xamarinフォームには、ビューモデルとの間のナビゲーションを処理する組み込みのイベントがないようです。

XamarinフォームのプリズムにはOnNavigatingToがありますが、OnNavigatingFromは表示されません。一部のページでは、OnNavigatingFromを使用して、保存または破棄をユーザーに促します。 OnNavigatingFromは、ダイアログに応答してキャンセルすることができます。

また、Prismは、アプリケーションの戻るボタンまたはハードウェアの戻るボタンを使用したナビゲーションを処理していないようです。ナビゲーションがどのように開始されたかにかかわらず、ビューモデルとの間のナビゲーションを処理できる必要があります。

私はこれらの問題を調査し、Xamarinフォームでシナリオをテストするのに数週間を費やしました。私は私の無知で何かを逃したと思います。私はプリミティブ型をアプリケーションのプロパティに永続させることができると理解していますが、複雑な階層オブジェクトを自分で直列化して逆シリアル化する必要がなければいいでしょう。 viewmodelにしてから移動する

  • ハンドルイベント
  • のviewmodelからのナビゲーションは、ダイアログ
  • に応じてキャンセルすることを可能にする:

    はXamarinのパラダイム/フレームワークは意志が世界をフォームあり

  • 状態を保存してビューモデルからナビゲートすることを許可する
  • 状態を取得してビューモデルにナビゲートすることができます
  • ナビゲーションイベントはじまった?

私はこの1つの質問では多くの質問があります理解し、私たちは、個々のソリューションを探していませんが、そのようなT10として私たちにXamarinフォームですべてを解決するためのツールを提供パラダイムやフレームワークは、UWPの場合と。

答えて

1

あなたがXamarin.FormsのためにPrismを研究するのにどれくらいの時間を費やしたか分かりませんが、それはあなたが言っていなかったことすべてを提供します。

この動画から始める必要があります。それは少し古いですが、それはあなたを始めさせるでしょう。限り、あなたが決定するために、実際にデータを永続化するように、それはだ

https://www.youtube.com/watch?v=DYRLcqG2BAY

。プリズムはあなたにそれをするフックを与えます。

+0

私はXamarinフォームのためにPrism.DryLoc.Forms 7.0.0.269-preを試しました。 OnNavigatedFromはありますが、OnNavigatingFromはありません。 OnNavigatedFromは、ナビゲーションをキャンセルするメカニズムを提供していないようです。 – Vague

+2

あなたはナビゲーションをキャンセルするためにIConfirmNavigationAsyncを使用します –

+0

私は本当にプリズムが好きです。あなたが私が間違っていることを願っていたので、それはすばらしいニュースです。しかし、私が読んだもう一つの問題は、アプリケーションの戻るボタンまたはハードウェアの戻るボタンが押されてもプリズムナビゲーションイベントが発生しないということでした。本当? – Vague

関連する問題