2017-01-13 5 views
2

내 UWP 앱에서 Template10을 사용하여 다음 스타일의 탐색을 구현하려고하지만 여러 프레임을 독립 기록 스택으로 사용하는 방법을 고민하고 있습니다. 피벗의 각 프레임 내에서 UWP 탐색 (Template10), 피벗 제어, 여러 프레임

Side-by-side

, 나는 그것이 자신의 역사를 다시 스택의이 독립적 인 프레임을 가지고 싶어. 프레임 사이를 탐색하는 것은 피벗을 통해서만 가능합니다.

나는 다음과 유사한 코드를 사용하는 생각을했다 :

<Pivot> 
    <PivotItem Header="PageA"> 
     <Frame x:Name="PageAFrame" /> 
    </PivotItem> 
    <PivotItem Header="PageB"> 
     <Frame x:Name="PageBFrame" /> 
    </PivotItem> 
    <PivotItem Header="PageC"> 
     <Frame x:Name="PageCFrame" /> 
    </PivotItem> 
</Pivot> 

그러나, 실제로 탐색을 구현하는 방법을 모르겠어요. 나는 다음과 같은 코드를 사용하여 시도했지만, 행운과 :

var nav = Template10.Services.NavigationService.NavigationService.GetForFrame(PageAFrame); 

하지만 nav은 항상 null입니다.

PageAFrame.Navigate(typeof(PageA)); 

을하지만 내 ViewModels는 인스턴스화되지 않습니다

는 I도 시도했습니다.

아이디어가 있으십니까?

참고 : 내가 햄버거 메뉴를 사용하지 않는 이유는 피벗 사이를 스왑 할 수 있어야하지만 각각의 독립 기록 스택을 보존해야하기 때문입니다.

답변

2

중첩 된 프레임이 좋습니다. 여러 프레임은 T10에서 확실히 지원되는 중요한 유스 케이스이지만 사람들은 단일 프레임이 즉시 지원되고 여러 프레임에 개발자 코드가 필요하다는 것을 인식합니다.

개념적으로 T10은 모든 프레임을 래핑하는 NavigationService를 만듭니다. 생성 된 첫 번째 NavService는 앱 뒤로 버튼에 자동으로 연결되지만 NavigationServiceFactory의 인수를 사용하여 개발자가 다시 할당하거나 끌 수 있습니다.

당신이 팩토리 메소드를 사용하여 관련 NavigationService를 만들 필요가 소개 모든 프레임에 대한 https://github.com/Windows-XAML/Template10/blob/master/Template10%20(Library)/Common/Bootstrapper/BootStrapper.cs#L278

. 그렇게하면 T10에 등록되어 제대로 작동합니다. 즉, 앱의 워크 플로는 이제 다름 없습니다. Frame.Navigate() 대신 NavigationService.Navigate()를 사용하고 지정한대로 GetForFrame()을 사용하여 NavigationService에 액세스하십시오.

의미가 있습니까?

+0

안녕하세요, Jerry, 이 작업은 정상적으로 작동하지만 GetForFrame을 호출 할 수 있도록 내 ViewModels에서 프레임별로 액세스하는 가장 좋은 방법은 확실하지 않습니다. . 'WindowWrapper.Current() NavigationServices.FirstOrDefault (N => n.Frame.Name.Equals ("PageAFrame")) : 순간 , 난 해키 일을하고 있어요.Frame;' 하지만 프레임에 액세스하는 더 좋은 방법이 있어야한다고 생각합니다. 아이디어가 있으십니까? – Darshan

0

Template10 네비게이션 서비스는 애플리케이션의 루트 프레임을 처리하지만 중첩 된 프레임에 대해서는 알지 못합니다. 그래서 당신을위한 나의 충고 (그리고 그것이 내가 한 것)는 중첩 된 프레임 탐색을 수동으로 처리하는 것이므로 Template10에서이를 수행하는 방법을 찾기 위해 시간을 낭비하지 않아도됩니다.