1

ナビゲーションウィンドウの戻るボタンが押されたときを判断し、そのイベントを特別なものにトラップする方法。ページの状態を管理しようと考えています。

4

2 に答える 2

4

NavigationWindow.Navigatingまたは のいずれかにハンドラーを追加しますNavigationService.Navigating。ハンドラーで:

void NavigationService_Navigating(object sender, NavigatingCancelEventArgs e)
{
    if (e.NavigationMode == NavigationMode.Back) {
        e.Cancel = true;

        // TODO: whatever state management you're going to do
    }
}

Ps ナビゲーション サービスを登録する必要があります。私のコードでは、ナビゲーション サービスがまだ null だったため、ページ コンストラクターでは機能しませんでした。そのため、Loaded="page_Loaded" を XAML ページ タグに追加し、そこに割り当てました。

bool _navigationServiceAssigned = false;
private void page_Loaded(object sender, RoutedEventArgs e)
{
    if (_navigationServiceAssigned == false)
    {
        NavigationService.Navigating += NavigationService_Navigating;
        _navigationServiceAssigned = true;
    }
}

には、ページの状態を管理するために必要なナビゲーション リクエストに関するすべてのNavigatingCancelEventArgs情報が含まれています。

于 2012-07-25T16:41:03.083 に答える
1

NavigationService、ナビゲーションプロセスを制御する場合に、サブスクライブできるいくつかのイベントを提供します。

  • フレームがナビゲートしようとしているときのナビゲート。停止するには、キャンセルをtrueに設定します。
  • ナビゲーションが終了したが、レンダリングされる前にナビゲートされた
  • NavigationFailed、問題が発生した場合
  • NavigationProgress、リモートナビゲーション呼び出しのチャンクがダウンロードされているとき。
  • NavigationStopped、StopLoadingメソッドが呼び出されたとき、またはダウンロード中に新しいナビゲート要求が行われたとき
  • ページがレンダリングされたときにLoadCompleted
于 2012-07-25T16:36:26.337 に答える