2011-06-15 4 views
3

私は、どのページからもメインページに戻ることができるアプリケーション内ホームボタンの実装について疑問を抱いていました。 WP7開発ガイドラインではこれが許されていないことを覚えています。しかし、私はそれについて書かれた情報を見つけることはできません。メインページにナビゲートするためのアプリ内ホームボタンは許可されていますか?

これはどこに書かれていますか?

答えて

0

私は、戻るボタンのナビゲーションが最後に表示されたページに戻る限り、それが許されると信じています。

1

これは許可されていないとは思われませんが、これを行うと、戻るボタンを使用してアプリを終了しようとするとユーザーを迷惑にするナビゲーションループが発生する可能性があります。

たとえば、A、B &という3つのページを持つアプリを想像してみましょう。ページCには、ページAに直接戻るための「ホーム」ボタンがあります。だからあなたのナビゲーションスタックはこのように見て終わる可能性があります:バックスタートページにユーザーを取得し、アプリを終了するには、[戻る]ボタンを押すの多くを必要と

A -> B -> C -> A -> B -> C -> A .... 

を。これを避けるにはいくつかの方法がありますが、もっとも明白ですが、もちろん、「家庭」ボタンを用意しないでください。あなたが判断した場合しかし、それはあなたが

  • 使用non-linear navigation service円形ナビゲーション

  • 使用あなたがグローバルフラグを維持し、より素朴な方法を、管理することができ、あなたのアプリケーションを持っている必要がありときユーザはホームボタンを押してこのフラグを設定し、NavigationService.GoBack()を呼び出します。各ページでOnNavigatedToメソッドをオーバーライドし、このグローバルフラグが設定されている場合は、メインページに戻るまでNavigationService.GoBack()を再度呼び出します。

1

これは許可されていますが推奨されていません。原則として、メインページに戻るためのナビゲーションのために戻るボタンを使用する必要があります。

この動作を実装する場合は、電話に詳しい実際のユーザーで慎重にテストする必要があります。電話に精通していないユーザーにUXテストを無効にしないでください。あなたの実際のユーザーは、あなたのアプリがネイティブアプリや他のほとんどのコンベンションに従うと期待しています。

これを実装する必要がある場合は、おそらくNonLinear Navigation Serviceを使用して、戻るボタンの動作を正しく管理したいと思うでしょう。

ホームボタンが一般的に推奨され
2

msdn source:ユーザーインタフェースでホームボタンを配置

は、Windows Phoneのナビゲーションモデルから外れます。

アプリに[ホーム]ボタンを実装すると、アプリケーションに深刻な影響を与える2番目の問題が発生する可能性があります。ユーザーが無限に(または無限に近い) [ホーム]ボタンとハードウェアの[戻る]ボタンの両方を使用してナビゲートすると、ループします。このループは、バックボタンを使用してあるアプリから別のアプリに戻って別のアプリに戻る場合に悪化する可能性があります。これらの問題があなたのアプリに影響しないことを確認してください。

しかし、あなたのアプリのアーキテクチャをできるだけ浅くし、リストやピボットを利用して、ユーザーがすぐに着陸画面に戻ることができるようにしてください。

しかし、例えば、グーグルドライブやDropboxのフォルダブラウザ用の浅いナビゲーションを持っているし、ホームボタンを必要としないアプリケーションがあるでしょう - フォルダ構造ユーザに深い行く後すぐにメインのページに移動することになるでしょう。ガイドライン、msdn source

あなたのアプリは、ユーザーピンのページをすることができます場合は、ホームボタンは、ユーザーがすぐに戻っアプリのルートに取得できるように必要とされているかどうかを検討してください。 ホームボタンは、アプリのホームページにナビゲートし、ナビゲーションバックスタック全体を消去します

たとえば、固定ページがショッピングカートである場合、ユーザーはショッピングカートでの購入を完了してから再びショッピングを開始することができます。この場合、ユーザにのホームボタンを与えると、アプリの開始に戻るために必要なタップ数を減らすことによって、ユーザエクスペリエンスが向上します。あなたのメインページで

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    while (NavigationService.BackStack.Any()) 
     NavigationService.RemoveBackEntry(); 
    base.OnNavigatedTo(e); 
} 
関連する問題