0

App.Xaml.cs に次のコードがあるという問題があります。

        var gamePage = Window.Current.Content as Frame;

        // Do not repeat app initialization when the Window already has content,
        // just ensure that the window is active
        if (gamePage == null)
        {
            // Create a main GamePage
            gamePage = new Frame();

            if (args.PreviousExecutionState == ApplicationExecutionState.Terminated)
            {
                // TODO: Load state from previously suspended application
            }


            // Place the GamePage in the current Window
            Window.Current.Content = gamePage;
            gamePage.Navigate(typeof(MainMenu));

        }

        // Ensure the current window is active
        Window.Current.Activate();

これは、アプリの初期化ではかなり標準的です。これは、Microsoft がそれを行うべきであると概説している方法と同じです。

  http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh771188.aspx

ただし、フレームを再度呼び出すと (この場合は OnNavigateTo で、今のところページを切り替えることができることを確認したいので、これは後で移動します)、何もせず、同じページに座っています。つまり、次のようになります。

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        base.OnNavigatedTo(e);
        var gamePage = Window.Current.Content as Frame;
        gamePage.Navigate(typeof(GamePage));

    }

ただし、これを呼び出すことはできません。 Microsoft が推奨するようなフレームは、問題になる場合とそうでない場合があります。

要約すると、問題は、Window.Current.Content に読み込まれた標準の Frame オブジェクトを使用してページ間を移動できないことです。アプリが OnNavigateTo に入り、最初のページ切り替えが正常に機能することを確認できます。しかし、もう一度ページを切り替えようとすると、もう機能しません。

何か案は?どんな助けでも大歓迎です!

4

1 に答える 1

0

App.xaml.csクラスgamePadのプロパティ ( public static Frame gamePage = new Frame();) を作成し、次のようにします。

 var gamePad = App.gamePage;

他のページで。これは、MVVM を使用したナビゲーションで行われる方法です。

于 2012-12-24T21:08:57.183 に答える