2013-04-07 2 views
2

저는 .NET/C# 영역을 처음 사용하고 Windows Phone 8 응용 프로그램을 개발하려고합니다. 개체 목록 (ListPage)을 보여주는 여러 페이지가 있습니다. 이 모든 페이지에는 FilterPage을 사용하는 필터 기능이 있습니다.Windows Phone 8 문자열이 아닌 매개 변수가있는 MVVM 광 네비게이션

내가 필요한 것은 ListPage에서 FilterPage으로 개체를 전달하는 것입니다. MVVM (MVVM 조명 템플릿)을 사용하고 싶습니다. 필자는 메시징 프레임 워크를 사용하여 거의 모든 것을 구현할 수있었습니다. 나는 해당 생성자에서 전달되는 객체를 취하는 FilterMessage을 사용하고 있습니다. ListPageFilterViewModel이 메시지를 수신 대기합니다. ListPageFilterPage으로 이동하고 FilterViewModel은 메시지에서 Object를 가져옵니다. 은 올바르게 통지되지만 FilterViewModelFilterPage이 처음 표시된 후에 FilterViewModel이 작성되기 때문에 통지되지 않습니다.

FilterViewModel을 앱 시작으로 초기화 할 수 있습니까? 이것이 방법이 아니라고 생각하는 이유를 말해주십시오.

감사합니다.

답변

1

ViewModelLocator 생성자에서 FilterViewModel 인스턴스를 생성하여 작동하도록 만들었습니다. 가장 좋은 방법은 아닌지 잘 모르겠습니다. 바라건대 더 많은 경험을 가진 누군가가 우리와 함께 그의 생각을 나눌 것입니다.

public ViewModelLocator() 
{ 
    ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default); 

    SimpleIoc.Default.Register<FilterViewModel>(); 

    ServiceLocator.Current.GetInstance<FilterViewModel>(); 
} 
+0

다른 사람이 더 좋은 해결책을 제안한 이래로 나는 이것을 최종 답으로 표시 할 것입니다. 누군가가 더 나은 해결책을 가지고 있다면 그것을 게시하십시오. 나는 그것을 해결책으로 표시 할 것입니다. – Lori

+0

http://stackoverflow.com/questions/28615841/get-navigation-data-in-view-model-windows-phone-8 pls 내가 메신저에 물건을 건네주지 않고 도울 수 있다면 알려주세요. – Eldho

1

이 시나리오에서는 PhoneApplicationService.Current.State 아래에있는 Session 개체에 다른 페이지로 전달할 인스턴스를 추가하고 있습니다.

네비게이션 완료 후 반대쪽에서 인스턴스를 추출 할 수 있으며 상태에서 제거해야합니다.

주 내부에 인스턴스가있을 때 응용 프로그램이 백그라운드로 들어가면 WP는 응용 프로그램을 직렬화하려고 시도합니다.

+0

그래, 네가하는대로하면 효과가있다. MVVM 메시징을 정말로 사용하고 싶지만, MVVM을 이해하는 데는 최적의 시간 \ 프로젝트이다. 고마워요. 대답은 어쨌든 – Lori