2016-06-27 2 views
2

예를 들어, 뉴스 목록 페이지에서 세부 정보 뉴스로 이동하십시오. 딱딱한 뉴스 목록이있는 선택한 항목을 전달합니까? newsLisViewModel에서 ViewModels간에 통신이 가능합니까?

NewsDetailVm.SelectedNews = SelectedNews; 

await Navigation.PushAsync(new NewsDetailPage()); 

newsListPage

또는 내가 페이지 만 자신과 함께해야합니까?

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

필자는 의존성 삽입을 고려해 볼 것이므로 많은 배관 코드를 다루고이 같은 결정을 훨씬 쉽게 할 수 있습니다. 직접 뷰 모델을 인스턴스화하는 경우 응용 프로그램이 더 부서지기 쉽고 테스트하기가 더 어려워집니다. 이 경우 pub/sub와 같은 분리 된 접근 방식을 고려할 것입니다. – Charleh

답변

2

당신은 MainViewModel()와 통신 및 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을 제공하는 공장을 할 수 있습니다.

그래서 당신은 당신이 무엇을 MainViewModelFactory.GetReference().DoAnything();

모든 뷰 모델에 액세스 할 수 있습니다.

@Charleh와 마찬가지로 이것은 매우 결합 된 방식입니다. 나는 Pub Sub를 사용하지 않지만, here은 ViewModel 구현에 좀 더 느슨한 방법이 필요한 경우 UWP MVVM Pub Sub에 대한 자습서입니다.

+3

이것은 일에 대해 매우 결합 된 방식처럼 들리지만, 대신 pub/sub 시스템을 사용하는 것이 좋습니다. – Charleh

+1

예, 그 매우 결합하지만 Xamarin/UWP 애플 리케이션에서 나는 페이지가 대부분의 경우에 결합되어 있기 때문에 나는 공장을 사용하는 Pub/Sub 구현을 보지 못했습니다. 하지만 당신이 술집 하위에 대한 예제를 게시 할 수 있다면 기뻐할 것입니다 =) – SeeuD1

+2

https://developer.xamarin.com/guides/xamarin-forms/messaging-center/ 그냥 봤 거든 그 소리, 관련 소리 ... – Charleh

관련 문제