現在、ネストされたナビゲーションを提供する Windows 8 用のアプリを開発しています。メイン ビューは、左側のメニュー エリア、コンテンツ エリア、ヘッダーの 3 つの部分に分かれています。メニューとヘッダーの両方が常に表示されている必要があります。
コンテンツ エリアにはメイン メニューから選択したコンテンツが表示されますが、ユーザーがたとえばリストを選択すると、コンテンツ エリアは再び 2 つのセクションに分割され、左側にリストを表示し、選択した詳細情報を表示します。右側 (組み込みのメール アプリに似ています)。詳細ビューにもサブビューがあり、同じ領域に表示する必要があります。詳細ビューをナビゲートするための戻るボタンを追加しました。
各ビューは現在 Frame 要素に含まれています。つまり、メイン ビュー内に MenuFrame と ContentFrame があり、「リスト」ビュー内に ListFrame と DetailFrame があります。フレームごとにバックスタックを維持して、戻ることができるようにします。
私の質問は、ユーザーがアプリケーションをスナップしたい場合 (他の Win8 アプリまたはデスクトップと並べて表示する場合)、アプリのスペースが非常に小さいことです。したがって、スナップ モードで一度に 1 つのビューのみを表示する必要があります。つまり、ユーザーは最初にメイン メニュー、次にリスト、次に詳細ビューを表示し、すべての場合に親ビューに戻ることができる必要があります (つまり、すべてのビューに対して単一のバックスタックを維持する必要がありますか?)。
この動作を実現する簡単な方法はありますか?
別の質問: 現在、私は Frame.Navigate-methods を使用していませんが、UserControls を作成して Frame.Content プロパティに割り当てるだけで、独自のバックスタックを実装しました。アプリが戻りたい場合は、前のコントロールがスタックからポップされ、フレーム コンテンツとして設定されます。これの利点は、例外を発生させる可能性のあるコントロール コンストラクターでコードを実行できることです。このメソッドの欠点や、標準の Frame.Navigate() パターンへの切り替えをお勧めするその他の理由はありますか?