0

プロジェクトには多くのPage派生クラスがあり、MainWindowそれはNavigationWindowです。

コードに実際に含める必要がありますか、それとも以前にNavigate(new PageDerivedClass()) 階層Pageツリーを構築する必要がありますか?

戻って同じことをやり直して新しい PageDerivedClassページを作成する場合、アプリケーションはどういうわけかそのケースを処理し、新しいページを作成する代わりに、作成済みのページを使用するべきではありませんか?

私が見る限り、新しく作成されたページはGarbageCollected、の矢印をナビゲートできるため、そうではありませんNavigationWindow

どういうわけか漏れていますか?

正しい使い方は?ここでは、MSDNはあまり役に立ちません。

4

1 に答える 1

1

NavigationWindow は、コンテンツ オブジェクトのインスタンスをナビゲーション履歴に保存しません。代わりに、NavigationWindow は、ナビゲーション履歴を使用してナビゲートされるたびに、コンテンツ オブジェクトの新しいインスタンスを作成します。この動作は、多数の大きなコンテンツに移動するときに過度のメモリ消費を避けるように設計されています。したがって、コンテンツの状態は、あるナビゲーションから次のナビゲーションまで記憶されていません。ただし、WPF には、コンテンツの一部の状態をナビゲーション履歴に保存できるいくつかの手法が用意されています。(ソースMSDN )

毎回新しいページを作成することを本当に避けたい場合は、さまざまなページ (Page1、Page2 など) のインスタンスを作成して Application オブジェクトに保存し、次のように切り替えることもできます。

 NavigationSerivce.Navigate(App.Page2);

出典:スタックオーバーフローの回答

于 2013-02-26T20:11:14.653 に答える