アプリケーションの QueryString に問題があります。メインページに 2 つのボタンがあります。ユーザーがボタンをクリックすると、アプリケーションは 2 番目のページに移動し、ボタン ID を Querystring に保存します。
今、私が抱えている問題は、ユーザーがボタンをクリックすると、クエリ文字列の「ID」キーが対応する ID 値に設定されますが、その ID の値が永続的になるということです。
すなわち
Button1 => NavigationService("/Page2.xaml?ID=1",UriKind.Relative) => page2 の onNavigated イベントで着信 ID 値を確認すると、2 ページ目で Querystring が ID に正常に設定されていることがわかります。
ただし、戻るボタンをクリックした場合は、button2 を押します
Button2 => NavigationService("/Page2.xaml?ID=2",UriKind.Relative) => page2 の onNavidated イベントの QueryString 値を確認すると、ID キーの値が 1 のままであることがわかります。
ボタン 2 を押して開始した場合、ID キーの永続値は 2 になります。
何が起こっているのかまったくわかりません.ページ間のページ遷移をアニメーション化しましたが、それがどのように影響するかわかりません.何が起こっているのか考えている人はいますか? メインページに戻った場合、アプリ全体をリセットする方法はありますか?
メインページで
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
base.OnNavigatedTo(e);
animation1.Stop();
animation2.Stop();
animation1.Begin();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
animation2.Begin();
animation2.Completed += (x, y) => NavigationService.Navigate(new Uri("/fooApp;component/Page2.xaml?id=1", UriKind.Relative));
}
private void button2_Click(object sender, RoutedEventArgs e)
{
animation2.Begin();
animation2.Completed += (x, y) => NavigationService.Navigate(new Uri("/fooApp;component/Page2.xaml?id=2", UriKind.Relative));
}
private void button3_Click(object sender, RoutedEventArgs e)
{
animation2.Begin();
animation2.Completed += (x, y) => NavigationService.Navigate(new Uri("/fooApp;component/Page2.xaml?id=3", UriKind.Relative));
}
ページ 2 で
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e )
{
base.OnNavigatedTo(e);
animation1.Stop();
animation2.Stop();
animation1.Begin();
}
ところで、Page2 Page Loaded イベント全体をコメントアウトしました。
アップデート
私が気づいたことの 1 つは、プログラムが 2 番目の Navigation 呼び出しさえ実行せず、最初の呼び出しのみを実行することです。これを知っているのは、button2 の Uri ソースを空の文字列に変更し、button1 をボタンにしてプログラムを実行すると、それが最初に押されると、どのボタンに戻って押しても、クエリ文字列の値が 1 のままになります。page2 の OnNavigatedTo イベントで NavigationEventArgs e オブジェクトを調べると、その URI ソースは常に最初の uri ソースになります。
私の推測では、animation2.Completed イベントはある種のマルチキャスト デリゲートとして機能していると思います。最初に入れられるものは何でも実行されます。うまくいきますが、アニメーションはありません.animation2.Completedイベントをクリアする方法を知っている人はいますか? または、代替の実装に関するアイデアがあります。