2011-07-01 17 views
0

私は、Pivo​​tを使ってたくさんのデータを表示するWP7 Silverlightアプリケーションを持っています。最初のプロジェクトを作成する場合は、Visual StudioのテンプレートはPAGE_LOADEDでViewModel.LoadDataを呼び出します。しかしViewModel.LoadDataを呼び出すタイミング

private void MainPage_Loaded(object sender, RoutedEventArgs e) 
{ 
    App.ViewModel.LoadData(); 
} 

on MSDNそれはあなたがPAGE_LOADEDの代わりにOnNavigatedTo使用する必要があると言い、ページがアクティブになったときOnNavigatedToは一度だけ呼び出されるため、PAGE_LOADEDながら、項目がページのビジュアルツリーに追加されるたびに呼び出されます。 MSDNの記事は、Silverlight Windows Phoneの代わりにSilverlight 4用です。

あなたは、ナビゲーション要求を調べ、 表示のためにページを準備するためにOnNavigatedTo方法 をオーバーライドします。 の例では、要求された データを読み込み、視覚的な 要素を有効または無効にすることができます。

通常、Loadedイベントのイベントハンドラ を作成する代わりに、OnNavigatedTo メソッドを使用します。ページがアクティブになるたびに、 の1回だけ呼び出されるため、 OnNavigatedToメソッドが好ましい です。 Silverlightフレームワークでは、ビジュアルツリーに要素 が追加されるたびに Loadedイベントが発生します。 は、ページをアクティブにすると が2回以上発生する可能性があります。 OnNavigatedToメソッドは、ページが でキャッシュから取得された場合でも、各要求が に対して呼び出されます。 このメソッドコードには、 コンストラクタにコードを配置するよりも、それぞれの要求に対して を実行する必要があります。

Visual StudioピボットテンプレートがPage_LoadedでViewModel.LoadDataを呼び出す理由はありますか?

+0

"ページのビジュアルツリーに項目が追加されるたびにPage_Loadedが呼び出されます。任意の参照? –

+0

私は間違ったリンクを参照しました。 OnNavigatedToに関するMSDNの文書はhttp://msdn.microsoft.com/en-us/library/system.windows.controls.page.onnavigatedto(VS.95).aspx – Jim

答えて

2

あなたはLayoutUpdatedとLoadedを混乱させると思います。
ロードされるのは、ページが表示されるたびに一度だけ呼び出されるべきです。

ページが構築された後にページに固有のデータを読み込むことは、特定のページに関連付けられたデータを扱う簡単な方法です。私の推測では、デフォルトのテンプレートはこれを理解して学ぶのが簡単なので、これを使用しています。

更新
参照するMSDNの記事は、Page.Loaded用です。 WP7はPageを使用せず、代わりにPhoneApplicationpageを使用します。
WP7を使って1年以上働いていて、数十種類のアプリを作ったことがありますが、WP7アプリで複数回呼び出されたLoadedイベントは見たことがありません。

+0

です。 MSDNの発言に関する最新の質問を参照してください。 – Jim

+0

私は実際にはありません。潜在的なパフォーマンスの牽引に慎重になりたいだけです。それで、Page_LoadとOnNavigatedToにコードを置くのに違いはありますか? – Jim

+0

@Jim OnNaigatedToは、最初のページがアンロードされていない場合、ページ間を移動するときにページがロードされた後に複数回呼び出すことができます。 –

関連する問題