2012-01-06 10 views
19

PhoneApplicationPageを経由せずにWindows PhoneアプリでNavigationServiceにアクセスするにはどうすればよいですか?私の目標は、起動時にアプリケーションのプライマリビューモデルに渡すことです。これは、WPFとSilverlightで私にとって非常にうまく機能するテクニックです。PhoneApplicationPageを経由せずにWidows PhoneアプリでNavigationServiceにアクセスするにはどうすればいいですか?

答えて

35

アプリのPhoneApplicationFrameから入手できます。すべてのWindows Phoneアプリにフレームがあるため、アプリのどこからでもアクセスできます。

((PhoneApplicationFrame)Application.Current.RootVisual).Navigate(...); 
+2

は、これは私の検索の約30分を保存 - あなたの仕事が大好き! – Doug

+0

@Doug - ありがとう!私ができるときはいつでも助けてうれしいよ:) – keyboardP

+1

ありがとうたくさんの友達。私の時間も節約できました。 – NoobDeveloper

1

、それはアプリケーションのデフォルトの実装でRootFrameフィールドからである取得するための別の場所:

#region Phone application initialization 

    // Avoid double-initialization 
    private bool phoneApplicationInitialized = false; 

    // Do not add any additional code to this method 
    private void InitializePhoneApplication() 
    { 
     if (phoneApplicationInitialized) 
      return; 

     // Create the frame but don't set it as RootVisual yet; this allows the splash 
     // screen to remain active until the application is ready to render. 
     RootFrame = new PhoneApplicationFrame(); 
     RootFrame.Navigated += CompleteInitializePhoneApplication; 

     // Handle navigation failures 
     RootFrame.NavigationFailed += RootFrame_NavigationFailed; 

     // Ensure we don't initialize again 
     phoneApplicationInitialized = true; 
    } 

    // Do not add any additional code to this method 
    private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e) 
    { 
     // Set the root visual to allow the application to render 
     if (RootVisual != RootFrame) 
      RootVisual = RootFrame; 

     // Remove this handler since it is no longer needed 
     RootFrame.Navigated -= CompleteInitializePhoneApplication; 
    } 


    #endregion 
関連する問題