Win Store, WP8, iOS, Droid의 주요 제약 프로젝트에서 MvvmCross와 ReactiveUI를 비교하는 과정에 있습니다. 우리는 이미 Xamarin을 선택했습니다.ReactiveUI - 라우팅에 대해 혼동했습니다.
전 ReactiveUI를 처음 사용했습니다. 나는 원칙적으로 보는 것을 정말 좋아하고 Paul은 천재라고 생각합니다. 그러나 세부 사항은 진짜 곰이되고있다. 나는 문서를 추적하는 데 며칠을 보냈다. (매뉴얼은 2011 년부터 시작되었으며 거의 완전히 구식 인 것 같다. "라우터"라는 단어도 포함되어 있지 않다.)와 샘플 코드.
ReactiveUI.Samples의 샘플을보고 있는데 또한 ReactiveUI 솔루션의 MobileSample-RT 프로젝트입니다.
나는 ReactiveUI.Samples "Routing"예제에서 내 작은 Hello World를 기반으로했습니다. 솔직히이 예제는 AppBootstrapper에서 유일한보기로 이동하는 것만 큼 많은 예제가 아닙니다. 나는 MobileSample-RT에서 "3 페이지"예제와 비슷한 것을 시도하고있다.
HostScreen.Router.NavigateCommandFor<LoginViewModel>().Execute(HostScreen);
같은 :이하려고하면 그것은 (ReactiveUI.dll에 들어 있지 PDB 심볼)
충돌
HostScreen.Router.Navigate.Execute(RxApp.DependencyResolver.GetService(typeof(LoginViewModel)));
: 내 프로젝트에서이 같은 시도하면 문제는, 결과 - 하드 크래시. 그것은 정말로 "단지 일해야"하는 것처럼 보이는 것처럼 나를 던졌습니다.
HostScreen.Router.Navigate.Execute(new LoginViewModel(HostScreen));
을 그리고 예상대로, 내보기로 이동 않습니다
나는이를 호출 할 수 있습니다. 또한 메인 화면에서 뒤로 버튼을 유선 :
this.OneWayBind(AppBootstrapper, x => x.Router.NavigateBack, x => x.BackButton.Command);
그리고 실제로 어떤 난 그냥 탐색 줄을보기에서 뒤로 이동합니다.
이제 저는 앞으로 나아가고 싶습니다. 이 작업을 수행하는 버튼을 다시 클릭하십시오 :
HostScreen.Router.Navigate.Execute(new LoginViewModel(HostScreen));
그리고 그보기로 돌아갑니다. 그러나 이번에는 실제로 뒤로 이동하려면 뒤로 버튼을 두 번 클릭해야합니다. 그런 다음 다시 앞으로 이동하면 다음 번에 3 번 클릭이 발생합니다. NavigationStack은 LoginViewModel의 새로운 인스턴스를 채우고 있습니다.
그래서 라우팅/탐색을 수행하는 올바른 방법은 무엇입니까? 그 명령들이 왜 충돌하고 있습니까? Navigate.Execute에서 매번 "new"를 호출하는 대신 탐색 스택에 이미있는 뷰 모델로 이동하는 방법은 무엇입니까 (또는 맨 처음에 있어야합니까?).
제공 할 수있는 명확성에 대해 감사드립니다.
pdb가로드되지 않았다고 언급했습니다. Paul은 모든 빌드를 http://www.symbolsource.org/로 푸시하며,이를 통해 reactiveui를 이해하고 학습하는 데 매우 중요하다고 생각했습니다. 비주얼 스튜디오 디버거를 구성하는 방법에 대한 지침이 사이트에 있습니다. – Gordon