How to Navigate to Other Pages From a User Control in Windows Phone 7

Let us say, you have a scenario to navigate from user control.

navigate from user control in Windows Phone

In the code behind of the user control, very first put the below namespace,

using System.Windows.Navigation;

Next globally define an event as below,

public event EventHandler EventForPageNavigation;

After this you need to create a method to handle the page navigation event as below. This function is taking URI to navigate as input parameter.

Windows Phone navigation

Let us say you have a button on the user control and you want to navigate on click event of that button then you need to call above function inside the click event of the button like below:

navigation in Windows Phone
Finally the code behind of the user control should look like below:

using System;
using System.Windows.Controls;
using System.Windows.Navigation;
 
namespace test
{
    public partial class MyUserControl :
UserControl
    { 
        public event EventHandler EventForPageNavigation;
 
        public MyUserControl()
        {
            InitializeComponent();
        }
 
        public void MethodToNavigateToPage(Uri uri)
        {
            var e = new NavigationEventArgs(null, uri);
            if (EventForPageNavigation != null)
                EventForPageNavigation(this, e);
        }
 
        private void btnNavigate_Click(object sender, System.Windows.RoutedEventArgs e)
        {       
            MethodToNavigateToPage(new Uri("/ImageUpload.xaml", UriKind.Relative));
        }
    }
}


Next you need to handle this event of the main page where user control is being used. Let us say you are using user control with the name NavigationUserControl. What I mean while adding user control on the XAML of the main page you gave the name NavigationUserControl.

First you will have registered the event in the OnNavigatedTo method or constructor of page as below,

NavigationUserControl.EventForPageNavigation += new EventHandler(NavigationUserControl _NavigateToPageEvent);

 

Then in the  navigated event, navigate to the URI as below,

void NavigationUserControl_NavigateToPageEvent(object sender, EventArgs e)
{
    NavigationService.Navigate(((NavigationEventArgs)e).Uri);
}

So in this way you can perform navigation in a user control. I hope this post is useful. Thanks for reading

Next Recommended Readings