Understanding Frame and Page Navigation on the Windows Phone 7 platform

Introduction

Windows Phone application developers are aware that WP allows using both Silverlight and XNA for developing applications for the platform. The Silverlight-based WP page model might be familiar to many Silverlight developers (Check MSDN's Silverlight Navigation Overview if you need a refresher). However there are a few points which transcend when we talk of Windows Phone platform.

First, there is a dedicated "Back" hardware button on the Windows Phone 7 devices. Second, the form factor allows applications to be invoked out of turn (another application can be launched by clicking the Launch button and selecting an application) when you least expect it.

Elegant application developers are expected to handle such scenarios to ensure that their applications can fit naturally into the Windows Phone 7 navigation model and provide default transitions that mimic the Windows Phone 7 theme.

Windows Phone 7 applications are composed of a container element called PhoneApplicationFrame that can render PhoneApplicationPage.

When you create a default Windows Phone project, the default page has the following code, which illustrates this.

// In App.xaml.cs
public PhoneApplicationFrame RootFrame { get; private set; }

This indicates that the frame is the top most element in the navigation stack.

// In MainPage.xaml.cs
public partial class MainPage : PhoneApplicationPage
    {
        // Constructor
        public MainPage()
        {
            InitializeComponent();
        }
    }

The frame is the top most element in the navigation stack
Figure 1: The frame is the top most element in the navigation stack

Orientation changes

To tell your application that it has to support a different orientation, you need to set the SupportedOrientations property. You can specify the current orientation with the Orientation property. The orientation of how the page will be rendered is determined by how the device running the Windows Phone 7 application is oriented.

The splash screen is not considered a page since it is transient UI which does not persist and does not hold application state. The same analogy can be applied to the error dialogs and login pages. For transient UI screens, the default pop up invocation when the Back button is pressed should be overridden.

For a regular page, on "Back" button invocation, the application should either navigate to the previous page or exit.

How to navigate between pages

To navigate to a new page, you can call the NavigationService.Navigate API and pass in the desired page's relative URL.

NavigationService.Navigate(new Uri("/Pages/ShoppingCart.xaml", UriKind.Relative));

To go back to the previous page, you call the NavigationService.GoBack API.

NavigationService.GoBack();

Passing parameters across pages

To pass parameters across pages, your URI should contain the parameter as the message portion of the URI on the page from where you are navigating.

//Mainpage.xaml.cs
private void buttonNextPage_Click(object sender, RoutedEventArgs e)
{
NavigationService.Navigate(new Uri("/Pages/ShoppingCart.xaml?msg=" + arg1.Value, UriKind.Relative);
}

On the destination page, you write code to handle the passed argument.

//ShoppingCart.xaml.cs
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
base.OnNavigatedTo(e);
string argument = "";
if (NavigationContext.QueryString. TryGetValue("msg", out argument))
{
	textArgument.Text = argument;
}
}

Summary

In this article, we looked at how navigation works in Silverlight based Windows Phone 7 applications. I hope you have found this interesting.

About the Author

Vipul Patel is a Software Engineer currently working at Microsoft Corporation. He is currently working in the Office Communications Group and has worked in the .NET team earlier in the Base Class libraries and the Debugging and Profiling team. He can be reached at vipul_d_patel@hotmail.com



About the Author

Vipul Vipul Patel

Vipul Patel is a Software Engineer currently working at Microsoft Corporation, working in the Office Communications Group and has worked in the .NET team earlier in the Base Class libraries and the Debugging and Profiling team. He can be reached at vipul_d_patel@hotmail.com

Related Articles

Comments

  • There are no comments yet. Be the first to comment!

Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Protecting business operations means shifting the priorities around availability from disaster recovery to business continuity. Enterprises are shifting their focus from recovery from a disaster to preventing the disaster in the first place. With this change in mindset, disaster recovery is no longer the first line of defense; the organizations with a smarter business continuity practice are less impacted when disasters strike. This SmartSelect will provide insight to help guide your enterprise toward better …

  • Mobile is introducing sweeping changes throughout your workplace. As a senior stakeholder driving mobile initiatives in your organization, you may be lost in a sea of technologies and claims from vendors promising rapid delivery of applications to your employees, customers, and partners. To help explain some of the topics you will need to be aware of, and to separate the must-haves from the nice-to-haves, this reference guide can help you with applying a mobile strategy in the context of application …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds