2011-03-04 13 views
0

ViewModelから他のページにナビゲートする方法はたくさんあります。ViewModelから別のページにナビゲートするのは正しいですか?

MVVMの目的はViewModelからViewを分離することですが、ViewModel内の他のページに移動することは、ViewとViewModelの間にいくつかの違いがあることを意味します名前を表示するには、ViewModelでもURI(文字列)を変更する必要があります。

私は知っておきたい、それはViewModelから別のページにナビゲートするのは正しいですか?それが間違っている場合は、他のページにナビゲートする正しい方法(またはより良い方法)は何ですか?

答えて

0

どちらも正しいですし、自然です。

ナビゲーション要求を行うとき、Uriの一部として提供する「名前」は、Viewクラスがコンテナに登録されている名前です。コンテナにクラスを登録することは、ViewまたはViewModelではなく、モジュール自体によって行われるため、ViewModelとViewModelの間の結合は導入されません。

つまり、プリズムがナビゲーションリクエストを解釈する方法をカスタマイズする場合は、いつでもIRegionNavigationContentLoaderを実装するクラスを書くことができます。これをコンテナに登録すると、プリズムは組み込みのRegionNavigationContentLoaderの代わりに独自のクラスを解決します。しかし、それは世界で最も簡単なことではありません。

0

ナビゲーションのロジックを保持する別のクラスを作成してみませんか?その場合、ViewModelからメッセージを送信するだけで、プログラムはビューを変更する必要があり、詳細は任意に決定されます。このアプローチでは、まだViewとVMの間に直接の接続はありません

+0

まだ接続とカップリングがあります。別のクラスでそれを隠しても、それは消えません。もちろん、ナビゲーションロジックを一元化することは、それを少しでも持っていればメリットがあります。 – Jon

関連する問題