ViewModels之间是否可以进行通信?

时间:2016-06-27 07:26:32

标签: c# mvvm xamarin viewmodel

例如,从新闻列表页面移动到详细新闻。 Сan我将带有新闻列表的选定项目传递给详细信息? 在newsLisViewModel

NewsDetailVm.SelectedNews = SelectedNews;
在newsListPage

await Navigation.PushAsync(new NewsDetailPage());

或者我应该只处理页面本身?

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

1 个答案:

答案 0 :(得分:2)

您可以与MainViewModel()和工厂进行沟通,该工厂提供此MainViewModel()

的s ..
public class MainViewModelFactory{

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

MainViewModel具有每个其他所需Viewmodel的实例。

因此,您可以使用MainViewModelFactory.GetReference().DoAnything();

进行访问

每个ViewModel你拥有的东西。

但是像@Charleh说的那样,这是一种非常耦合的方式。我没有使用Pub Sub,但here是UWP MVVM Pub Sub的教程,如果你需要一种更宽松的方式来实现你的ViewModel。