2012-01-06 2 views
19

Как получить доступ к NavigationService в приложении Windows Phone, не проходя через PhoneApplicationPage? Моя цель - передать его в основную модель представления приложения при запуске, технику, которая хорошо работала для меня в WPF и Silverlight.Как получить доступ к NavigationService в приложении WIndows Phone, не проходя через PhoneApplicationPage?

ответ

35

Вы можете получить его из приложения PhoneApplicationFrame. Он будет доступен из любого места приложения, поскольку каждое приложение Windows Phone имеет Frame.

((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 
Смежные вопросы