Windows Phone 7アプリで現在のページのアクティブなインスタンスを取得する方法はありますか?私はドキュメントを読んでいて、それを理解しようとしても無駄です。
私の例では、アクティブページのパブリックメソッドを呼び出すグローバルループを実行しています。
たとえば、アプリケーションはPage1.xaml
にロードされます。このページがアクティブな状態でループが発生した場合、Page1分離コードにあるループを発生させる必要があります。 Page2がアクティブな場合、Page2コードビハインドファイルで別のメソッドを起動する必要があります。
注:インスタンス変数へのアクセスが必要なため、個々のページのメソッドを静的にすることはできません。したがって、アクティブなページ(ある種の変数を介して実現できる)が必要なだけでなく、現在のページのインスタンスも必要です。
ルートフレームから現在のページを取得できます。プロジェクトで生成されるデフォルトのApp
クラスには、すでにタイプRootFrame
のPhoneApplicationFrame
プロパティがあります。 Content
プロパティの値は現在のページであり、PhoneApplicationPage
にキャストできます。
var currentPage = ((App)Application.Current).RootFrame.Content as PhoneApplicationPage;
RootVisual
クラスのApplication
プロパティは同じフレームを参照しますが、UIElement
であるため、代わりに次を使用できます。
var currentPage = ((PhoneApplicationFrame)Application.Current.RootVisual).Content;
現在のXAMLページのURLは、NavigationService.CurrentSource http://msdn.Microsoft.com/en-gb/library/system.windows.navigation.navigationservice.currentsource(v = VS.92).aspxを使用して取得できます。
ただし、現在のページ自体のインスタンスを取得するには、これを自分で維持する必要があると思います。1つの方法は、OnNavigatedToをオーバーライドする共有抽象クラスからすべてのページを継承し、これを使用して自分自身を記録する機会として使用することです。シングルトン(多分あなたのアプリクラス)