2

Windows ストアのめちゃくちゃなアプリがあります。Basic Page を追加し、LayoutAwarePage などの Common クラスを追加しました。

ただし、アプリの起動時に Page.OnNavigatedTo は呼び出されません。MSDN のドキュメントには次のように書かれています。

Page がロードされ、親 Frame の現在のソースになるときに呼び出されます。

これは、起動中に発生します。LoadState が呼び出されていないときに、これを発見しました。

Rick Barraza は、彼のデモで OnNavigatedTo によって呼び出される LoadState を使用します。

http://channel9.msdn.com/Series/Migrating-apps-from-Windows-Phone-to-Windows-8/Binding-the-Interface-in-Windows-Store-apps#time=2m50s

いくつかのナビゲーション ボタンを追加したので、OnNavigatedFrom呼び出されますが、OnNavigatedTo によって設定されていないため _pageKey が null であるため、何かが壊れていることがわかります。

私は実際にはかなり立ち往生しています。これは Microsoft のネイティブ Page クラスの失敗ですが、明らかに私だけがこの問題を抱えており、100% 発見可能です。奇数。

更新 1

新しい Grid App プロジェクトを追加しましたが、それは機能します。共通のものはすべて標準としてそこにありますが、基本ページを空のアプリに追加するときに書き込まれる共通のものとは異なります。

これを新しい空のアプリから再現しようとします。

更新 2

まあ、私はあきらめます。新しい空白のアプリと新しい空白のページの追加は問題ありません。自分のページをコピーして貼り付けて、何も起こらなかったふりをします。

4

2 に答える 2

2

私は同じ問題を抱えていましたが、追加した基本ページに OnNavigateTo の空のオーバーライドが存在することが原因でした。

public sealed partial class MvvmView1
    {
        public MvvmView1()
        {
            this.InitializeComponent();
        }

        /// <summary>
        /// Invoked when this page is about to be displayed in a Frame.
        /// </summary>
        /// <param name="e">Event data that describes how this page was reached.  The Parameter
        /// property is typically used to configure the page.</param>
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
        }
    }
于 2013-04-16T16:05:08.247 に答える
1

OnNavigatedTo を呼び出すには、Frame がその Navigate メソッドを呼び出す必要があります。

Frame localFrame = this.MyFrame; //this assumes MyFrame is Frame that exists in xaml and has a name 

localFrame.Navigate(new myPage());

コンテンツ インジェクションを使用している場合

localFrame.Content  = new myPage();

ページはロードされるだけで、ナビゲートされないため、myPage の OnNavigatedTo イベントは発生しません。

于 2012-12-01T14:21:01.790 に答える