2017-11-28 1 views
0

프리즘 템플릿 패키지 (2.0.7)로 만든 프리즘 Xamarin.Forms 응용 프로그램이 있습니다. 모든 패키지는 최신 상태 :서비스 내에서 프리즘 내비게이션

(시작시,하지만 내 주요 응용 프로그램이 해당 문제없이 269 미리를 사용으로 인해 안드로이드 렌더러에 NullReferenceException이에 v7.0.0.269 사전에 업데이트 할 수 없습니다),363,210

나는 다음과 같은 구성 요소가 있습니다 인터페이스로 사용하여 컨테이너에 등록

  • 모듈 "첨부 파일"(프리즘 모듈)
  • 모듈 "뷰어"(프리즘 모듈)
  • 서비스 "AttachmentService을" 싱글

그들은이 작업을 수행해야합니다

  1. AttachmentsPage을 (첨부에서 mentsModule)는
  2. AttachmentPageViewModel는
  3. 방법은 유형에 따라 올바른 ViewerPage을 결정하는 첨부 파일 서비스의 "OpenAttachment"-Method를 호출하고 (페이지로 직접 이동합니다 프리즘 - NavigationService를 사용하여 하나 개의 첨부 파일을 선택하면 일부 개체를 나열 샘플이는 ViewerModule의 "ImageViewerPage은")입니다

다음 탐색 할 경우에만 작동 :

M을 ainPage -> AttachmentsPage -> ViewerPage -> (뒤로 화살표) AttachmentsPage -> ViewerPage (등)

하지만 ViewerPage에 대한 탐색을 MainPage 다시 이동하면 더 이상 작동하지 않습니다 :

MainPage -> AttachmentsPage -> ViewerPage -> (뒤로 화살표) AttachmentsPage -> (뒤로 화살표) MainPage -> AttachmentsPage -> (버튼에 탭이 ViewerPage를 탐색 할 때 아무것도 더 이상 발생하지 않습니다)

AttachmentsService는 NavigationService를 가져옵니다 생성자 주입과 n을 통해

public AttachmentService(INavigationService navigationService) 
    { 
     this.navigationService = navigationService; 
    } 

    public async void OpenAttachmentWithViewer(object attachment) 
    { 
     // ToDo: handle parameter proberbly 
     var attachmentType = "image"; 

     // select correct viewer 
     if (attachmentType == "image") 
     { 
      // navigate to image viewer 
      var navParams = new NavigationParameters(); 
      navParams.Add("object",attachment); 
      var navTask = this.navigationService.NavigateAsync(
       "ImageViewerPage", 
       navParams, 
       useModalNavigation: false); 
      await navTask; 

      var result = navTask.Status; 
      Debug.WriteLine($"Navigation State is {result}"); 
     } 
    } 

내비게이션 작업 결과 상태를 확인하려고했는데 항상 "RanToCompletion"입니다.

private void OnOpenAttachment() 
    { 
     // ToDo: get the selected attachment 
     object selectedAttachment = null; 

     // navigating inside a service -- not working when navigating back to MainPage 
     //this.attachmentService.OpenAttachmentWithViewer(selectedAttachment); 

     // navigation from view model -- working 
     var navParams = new NavigationParameters(); 
     navParams.Add("object", selectedAttachment); 
     this.navigationService.NavigateAsync("ImageViewerPage", navParams, useModalNavigation: false); 
    } 

힌트 : 프리즘 NavigationService 대신이 문제가 발생하지 않는 서비스를 사용하여 직접 탐색 할 AttachmentsPageViewModel 수정

내가에서 내 홈페이지 - 응용 프로그램으로 전환 새로운 .NETStandard에 PCL는 기반 Prism v6.3.0.1을 사용하여 성공적으로 유사한 기능을 수행했습니다. 이 기능은 포트 이후로 한 번만 탐색 할 수도 있습니다.

사실이 문제를 해결하는 방법을 모르겠습니다.

프리즘 NavigationService를 살펴보고 탐색이 발생하지 않는 이유를 알아낼 수 있습니까?

아직 프리즘 저장소에 알려진 버그를 찾지 못했습니다.

답변

0

다른 서비스에서 NavigationService를 사용할 수 없습니다. 특히 해당 서비스가 싱글 톤인 경우에는 사용할 수 없습니다. Xamarin.Forms의 탐색은 페이지에만 적용되며 관련 페이지의 컨텍스트에서 작동합니다. 대신 서비스에서 결과를 반환해야하며 그 결과에 따라 VM에서 탐색해야합니다. 서비스 내에서 탐색하지 마십시오.

+0

빠른 답변 주셔서 감사합니다. Prism 6이 적용된 이전 PCL 기반 앱은 Navigation Service (App.xam.cs에 등록 된 navigation-call을 포함하는 명령) 내의 CompositeCommands에 사용됩니다. 나도이게 나쁘다고 생각해? Btw : 저는 프리즘을 정말 좋아합니다. ;) –

관련 문제