2

page1現在、2 つのページ ( 、 )を含む Windows 8 アプリを開発していますpage2

フォーム page1 から page2 に移動した後、フォームthis.Frame.Navigate(typeof(AnotherPage)); のインスタンスにアクセスする方法を使用します(静的インスタンス プロパティを使用して実装し、コンストラクターが呼び出されたときに設定できます) 。page2page1

しかし、現在のページの外部からページの現在のインスタンスにアクセスするためのビルド内機能はありますか?または、このプログラミング パターンは WinRT パラダイムで推奨されていますか?私のシナリオを実装する方法はありますか?

4

1 に答える 1

0

最初に、デフォルトでは、次のページに移動した後、前のページのインスタンスはメモリに保持されません。ページのデフォルトの NavigationCacheMode を変更しない限り、これは良い考えではありません。読み込みに時間がかかり、頻繁に戻るハブ ページのようなものです。

私が提案するアプローチは、MVVMパターンを使用することです。そのため、ページが互いに通信する必要はなく、それを行うのはビュー モデルです。次に、MVVM Light Toolkit の Messenger クラスのようなヘルパーで pub/sub パターンを使用して、オブジェクト間の密結合を追加する代わりに、弱いイベント/メッセージを送信します。

全体として、それはあなたが何をしたいのか、そしてなぜあなたのページが互いに対話したいのかによって異なります. Navigate() 呼び出しでパラメーターを渡すことができます (ただし、SuspensionManager クラスと Frame クラスからの組み込みシリアル化を使用してアプリの一時停止をサポートする場合は、それが単なるプリミティブ型であることを確認してください)。ある種のグローバル リポジトリまたは設定サービスを使用して、ページ間でデータを共有することもできます。

これらに投資したくない場合は、単純な古い静的クラスを使用するだけで十分かもしれません。どんな作品でも。

于 2012-10-29T16:29:32.193 に答える