ページが Silverlight でナビゲートされると、このメソッドをオーバーライドできます。
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
}
には、次のように定義されNavigationEventArgs
た列挙があります。NavigationMode
public enum NavigationMode
{
New = 0,
Back = 1,
Forward = 2,
Refresh = 3,
}
しかし、呼び出すとe.NavigationMode
常にスローされますNotImplementedException
ユーザーがブラウザの進む/戻るボタンを押したためにページがナビゲートされていることをSilverlightで検出する方法はありますか?
私が達成しようとしているのは、ユーザーが戻るボタンを押したときに保持できるある種の状態です。
たとえば、データグリッドに顧客のリストを表示している顧客ページがあるとします。ユーザーは顧客を選択でき、その顧客のすべての注文を示す詳細ビューがあります。注文アイテム内で、別のページである注文の出荷履歴に移動するハイパーリンク リンクをクリックできるようになりました。ユーザーが戻るボタンを押すと、顧客ページに戻り、表示していた顧客を自動的に選択したいと考えています。これはまったく可能ですか?
フラグメントナビゲーション機能も試してみました
NavigationService.Navigate(new Uri("#currentcustomerid="
+ customer.Id.ToString(), UriKind.Relative));
顧客の選択が変更されたときに、ユーザーが顧客ページでさまざまな顧客をクリックすると、履歴に追加される項目が多すぎます。
編集
オーバーライドできるメソッドもあります
protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
{
}
BugFinder の回答で示されているように、NavigationService.Navigating イベントを処理するのと同じです。このメソッドでは、戻るボタンまたは進むボタンを押したときにe.NavigationMode
常に戻ります。New
このメソッドが戻るのBack
は、明示的に呼び出したときだけですNavigationService.GoBack()