1

アプリ名と戻るボタンを備えた新しいアイテム Basic Template を使用しています。「空白」プロジェクト内で使用されています。

ただし、戻るボタンはタッチ イベントに応答しません。

以下は、生成されたコードです。戻るボタンが消えるだけです。

<Button x:Name="backButton" IsEnabled="{Binding Frame.CanGoBack, ElementName=pageRoot}" Style="{StaticResource BackButtonStyle}" Click="GoBack"/>

クリックハンドルを自作してナビゲートしてみました。

this.Frame.Navigate(typeof(MainPage));

しかし、それも機能していません。おそらく、自分でボタンを作成してそのために接続できるため、自動生成された何かが原因です(したがって、実際にはテンプレートに固執しようとしています)。

アイデアはありますか?

編集:ナビゲーションがどれも機能していないのは本当に奇妙だと思いました。さらにドリルダウンした後、LayoutAwarePage で何かが表示されます。ここで何かが欠けています。アップデートを投稿します。

編集:申し訳ありません。イベント クリック リスナーを再度追加しました (そのコピーを削除したに違いありません)。ただし、それでも問題は解決しません。戻るボタンを「GoBack」機能に設定してみましたが、戻るボタンを押すと消えてしまいます。また、独自のメソッドを作成して自分自身をナビゲートしようとしましたが、それでも機能しませんでした。

4

8 に答える 8

4

Clickボタンにイベントハンドラーが必要です。Click="GoBack"

<Button x:Name="backButton" Click="GoBack" IsEnabled="{Binding Frame.CanGoBack, ElementName=pageRoot}" Style="{StaticResource BackButtonStyle}"/>

GoBackLayoutAwarePage確認できない場合でも、ページの基本クラスである可能性が最も高い関数を使用できます。LayoutAwarePageクラスは内部にありますProject\Common

于 2012-10-16T01:14:10.197 に答える
2

私が見た XAML マークアップClickから、ボタンに関連付けられたイベント ハンドラーがないため、ボタンにフックしない限りアクションは実行されません。

于 2012-10-16T00:43:18.810 に答える
2

戻るボタンは、基になるナビゲーション フレームワークに自動的に結び付けられるため、戻るボタンを有効にするために独自のコードを記述する必要はありません。バック スタックにナビゲートするページがある場合、[戻る] ボタンが有効になります。

私が見たところ、欠けているのは、追加した基本ページでアプリを起動すると、ナビゲーション フレームワークのバック スタックにナビゲートするものが何もないということです。

次の手順を使用してシナリオをテストしました。

  1. 空のアプリ テンプレートを使用して、新しい C#/XAML Windows ストア アプリを作成しました。
  2. 次に、新しい基本ページ (BasicPage1.xaml) を追加しました。
  3. MainPage.xaml を開き、ボタンをページに追加しました。
  4. ボタンをダブルクリックし、次のコードをクリック イベント ハンドラーに追加しました。

    this.Frame.Navigate(typeof(BasicPage1));

プロジェクトを実行すると、戻るボタンが期待どおりに機能しました。

于 2012-10-16T16:07:25.270 に答える
1

私はこのように私の戻るボタンを作っています:

XAML コード。この場合、LoginPage.xaml.

<Button x:Name="ButtonGoBack" Click="ButtonGoBack_OnClick" Style="{StaticResource NavigationBackButtonNormalStyle}"/>

LoginPage.xaml.cs の C# コード

private void ButtonGoBack_OnClick(object sender, RoutedEventArgs e)
    {
        this.Frame.GoBack();
    }
于 2015-04-11T09:09:50.237 に答える
1

さて、このアプローチは基本ページからコードを取得しているように見えます。Pageからではなく、LayoutAwarePageから継承していることを確認していただけますか?それ以外の場合、GoBack はこの方法で実装されません。また、最初にこのページから別のページに移動していない場合は、GoBack できません。最後に (ここでブレインストーミングを行います)、(前の場所にある) ページではなく Frame 自体を設定してこのページに到達した場合、GoBack はできません。これにより、ナビゲーション履歴がクリアされます。

また、これが機能しないことを確認できますか?

this.Frame.GoBack();

頑張ってください!

于 2012-10-16T16:48:49.853 に答える
0

私はフランクと同じ問題を抱えていました。私の問題は、基本クラスの (LayoutAwarePage) ハンドラーも呼び出さずに OnNavigatedTo ハンドラーをオーバーライドしたことであることがわかりました。これは、LayoutAwarePage が OnNavigatedFrom ハンドラーで使用する _pageKey メンバー変数を設定していないことを意味していました。

これが同じ問題を抱えている他の人に役立つことを願っています。

于 2013-08-08T00:08:20.667 に答える