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



例如,从新闻列表的页面移动到详细信息。我将带有新闻列表的选定项目详细介绍吗?在NewsLisviewModel

NewsDetailVm.SelectedNews = SelectedNews;

在NewslistPage

await Navigation.PushAsync(new NewsDetailPage());

或我应该只使用页面本身?

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

您可以与MainViewModel()和提供此MainViewModel()

的Singelton的工厂进行通信
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,但如果您需要更松散的方法来插入您的ViewModels。

最新更新