Подтвердить что ты не робот

Как получить доступ к NavigationService в приложении WIndows Phone, не проходя через PhoneApplicationPage?

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

4b9b3361

Ответ 1

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

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

Ответ 2

Другое место для его получения - это поле 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