web-dev-qa-db-ja.com

WP7アプリで現在のページを取得する方法

Windows Phone 7アプリで現在のページのアクティブなインスタンスを取得する方法はありますか?私はドキュメントを読んでいて、それを理解しようとしても無駄です。

私の例では、アクティブページのパブリックメソッドを呼び出すグローバルループを実行しています。

たとえば、アプリケーションはPage1.xamlにロードされます。このページがアクティブな状態でループが発生した場合、Page1分離コードにあるループを発生させる必要があります。 Page2がアクティブな場合、Page2コードビハインドファイルで別のメソッドを起動する必要があります。

注:インスタンス変数へのアクセスが必要なため、個々のページのメソッドを静的にすることはできません。したがって、アクティブなページ(ある種の変数を介して実現できる)が必要なだけでなく、現在のページのインスタンスも必要です。

25
andersra

ルートフレームから現在のページを取得できます。プロジェクトで生成されるデフォルトのAppクラスには、すでにタイプRootFramePhoneApplicationFrameプロパティがあります。 Contentプロパティの値は現在のページであり、PhoneApplicationPageにキャストできます。

var currentPage = ((App)Application.Current).RootFrame.Content as PhoneApplicationPage;

RootVisualクラスのApplicationプロパティは同じフレームを参照しますが、UIElementであるため、代わりに次を使用できます。

var currentPage = ((PhoneApplicationFrame)Application.Current.RootVisual).Content;
38
Derek Lakin

現在のXAMLページのURLは、NavigationService.CurrentSource http://msdn.Microsoft.com/en-gb/library/system.windows.navigation.navigationservice.currentsource(v = VS.92).aspxを使用して取得できます。

ただし、現在のページ自体のインスタンスを取得するには、これを自分で維持する必要があると思います。1つの方法は、OnNavigatedToをオーバーライドする共有抽象クラスからすべてのページを継承し、これを使用して自分自身を記録する機会として使用することです。シングルトン(多分あなたのアプリクラス)

5
Stuart