Reputation: 487
Coming from Windows Phone 8
I have never thought there will be a lot of changes done to the Windows Phone 8.1
code. Basically I'm just wondering how to do page navigation just like how you would do it on Windows Phone 8
. To do that you should add:
NavigationService.Navigate(new Uri("/SecondPage.xaml", UriKind.Relative));
but that code doesn't work for Windows Phone 8.1
.
Can someone please help me with this? If possible provide any links or documentation on all the new Windows Phone 8.1
methods.
Upvotes: 37
Views: 53148
Reputation: 149
To send multiple parameters: Its quite late to answer but might help someone. You can create a custom class, set your parameters in it and send its object as a parameter to your target page.
For example. Your custom class:
public class CustomDataClass
{
public string name;
public string email;
}
CustomDataClass myData = new CustomDataClass();
myData.name = "abc";
myData.email = "[email protected]";
Frame.Navigate(typeof(SecondPage), myData);
And then on the target page you can retrieve in OnNavigatedTo function like this:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
CustomDataClass myData2 = e.Parameter as CustomDataClass;
string name = myData2.name;
string email = myData2.email;
}
Hope it helps.
Upvotes: 0
Reputation: 8231
In Windows Phone 8.1, Page Navigation method is like this:
Frame.Navigate(typeof(SecondPage), param);
It means that you will navagate to 'SecondPage', and pass 'param' (a class based on object).
If you needn't to pass any parameters, You can use this:
Frame.Navigate(typeof(SecondPage));
You can find the documentation for this MSDN link
Upvotes: 63
Reputation: 388
// Navigation Without parameters
this.Frame.Navigate(typeof(SecondPage));
// Navigation with parameters
this.Frame.Navigate(typeof(SecondPage),MyParameters);
Upvotes: 1
Reputation: 738
In case you want to go back you can use:
if(this.Frame.CanGoBack)
{
this.Frame.GoBack();
}
If you want to go back on the click of back button, you need to override the hardwarebutton event:
HardwareButtons.BackPressed += HardwareButtons_BackPressed;
void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
{
Frame rootFrame = Window.Current.Content as Frame;
if(rootFrame != null && rootFrame.CanGoBack)
{
rootFrame.GoBack();
e.Handled = true;
}
}
Make sure to set e.Handled to true.
Upvotes: 23