2017-01-13 10 views
2

私は(Template10を使用して)私のUWPアプリでナビゲーションの次のスタイルを実装しようとしているが、独立した履歴スタックとして複数のフレームを使用する方法を苦労しています。ピボットの各フレーム内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はインスタンス化されません。

アイデア?

注:私はピボットの間で交換するが、それでも各独立した履歴スタックを保存できるようにする必要があるので、私はハンバーガーメニューを使用していない理由があります。

答えて

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でFrameからアクセスする最善の方法は不明です。 'WindowWrapper.Current()NavigationServices.FirstOrDefault(N => n.Frame.Name.Equals( "PageAFrame")):現時点で は、私はハックの事をやっています。フレーム; ' しかし、フレームにアクセスするにはより良い方法が必要だと思います。 アイデア – Darshan

0

Template10ナビゲーションサービスは、アプリケーションのルートフレームの世話をする、それがあなたのネストされたフレームを認識していません。だから私のアドバイスは、ネストされたフレームのナビゲーションを手動で処理することであり、Template10でそれを行う方法を見つけようと時間を無駄にしません。

関連する問題