2016-06-27 8 views
2

たとえば、ニュースリストのページから詳細なニュースに移動します。 ニュースリストを含む選択したアイテムを詳細に渡しますか? newsLisViewModelで ViewModels間の通信は可能ですか?

NewsDetailVm.SelectedNews = SelectedNews; 

await Navigation.PushAsync(new NewsDetailPage()); 

newsListPage

または私はページだけ自分自身で行う必要がありますか?

await Navigation.PushAsync(new NewsDetailPage(e.Item as News)); 
+1

私は間違いなくあなたのための配管コードの多くをカバーし、このような決定をはるかに簡単になるように依存性注入を検討すると思います。自分でビューモデルをインスタンス化する場合、アプリケーションはより脆く、テストするのが難しくなります。この場合、私はパブ/サブのようなデカップリングされたアプローチを考えていた – Charleh

答えて

2

あなたはMainViewModel()との通信を行うことができますし、このMainViewModel()

public class MainViewModelFactory{ 

private static MainViewModel main{get;set;} 
public static MainViewModel GetReference(){ 
if(main == null){ 
main = new MainViewModel(); 
return main; 
}else 
    return main; 
} 
} 

のsingeltonを提供工場MainViewModelは、他のすべての必要なビューモデルのインスタンスを持っています。

だからあなたはあなたが持っているもの​​3210

ごとのViewModelにアクセスすることができます。

@Charlehのように、これは非常に結合した方法です。 Pub Subを使用していませんが、hereは、あなたのViewModelsを実装するためにもっとゆるやかな方法が必要な場合は、UWP MVVM Pub Subのチュートリアルです。

+3

これは物事を行くために非常に結合された方法のように聞こえる、私はパブ/サブシステムを代わりに使用することを検討するだろう。 – Charleh

+1

はい、非常に結合されていますが、Xamarin/UWPアプリでは、ほとんどのケースでページが結合されているため、私は工場を使用するPub/Sub実装を見ていません。しかし、あなたがパブのサブの例を投稿することができれば私はそれを見ることを喜んで=) – SeeuD1

+2

https://developer.xamarin.com/guides/xamarin-forms/messaging-center/ちょうどグーグルとそれを思い付いた、関連する音... – Charleh

関連する問題