2014-04-18 9 views
37

Począwszy od Windows Phone 8 Nigdy nie przypuszczałem, że wiele zmian zostanie wprowadzonych w kodzie Windows Phone 8.1. Zasadniczo po prostu zastanawiam się, jak zrobić nawigację po stronie, tak jak zrobiłbyś to na Windows Phone 8. Aby to zrobić, należy dodać:Windows Phone 8.1 - Nawigacja strony

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

ale ten kod nie działa dla Windows Phone 8.1.

Czy ktoś może mi w tym pomóc? Jeśli to możliwe, podaj wszelkie linki lub dokumentację na temat wszystkich nowych metod Windows Phone 8.1.

+0

Czy otrzymujesz jakieś błędy? –

+0

to kody dla mnie na moim Nokia 630 z cyjan –

+0

Plese odnoszą się do [tego] [1] odpowiedź, może mógłby pomóc ... [1]: http://stackoverflow.com/ a/28761419/2295643 –

Odpowiedz

63

W Windows Phone 8.1, metoda Page Nawigacja jest tak:

Frame.Navigate(typeof(SecondPage), param); 

Oznacza to, że będzie navagate do 'secondpage', i przekazać 'param' (klasa na podstawie obiektu).

Jeśli nie muszą przechodzić żadnych parametrów, można użyć to:

Frame.Navigate(typeof(SecondPage)); 

można znaleźć w dokumentacji for this MSDN link

+0

A jeśli chcę wrócić, kliknięcie przycisku powrotu sprzętu nie działa, więc czy muszę dodać zdarzenie naciśnięcia przycisku sprzętowego, a następnie wprowadzić żądaną stronę? czy jest to ich łatwiejszy sposób? –

+6

Możesz użyć NavigationHelper na swojej drugiej stronie, dzięki czemu nie musisz dodawać obsługi zdarzeń. Na przykład możesz utworzyć stronę BasicPage zamiast BlankPage jako drugą stronę. I zobaczysz to. –

+1

wp8.1 różni się od wp8.0, ale bardziej przypomina winrt. –

23

W przypadku, gdy chcesz powrócić można użyć:

if(this.Frame.CanGoBack) 
{ 
this.Frame.GoBack(); 
} 

Jeśli chcesz wrócić po kliknięciu przycisku Wstecz, musisz zastąpić zdarzenie przycisku sprzętowego:

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; 
      } 

     } 

Upewnij się, że ustawiono wartość e.Handled na wartość true.

+2

... i nie zapomnij, że możesz to zrobić na poziomie aplikacji: http://stackoverflow.com/questions/24335925/windows-phone-8-1-universal-app-terminates-on-navigating-back-from -second-page –

1
// Navigation Without parameters 

this.Frame.Navigate(typeof(SecondPage)); 



// Navigation with parameters 

this.Frame.Navigate(typeof(SecondPage),MyParameters); 
+0

Jak przekazać wiele parserów –

+0

Użyj tablicy lub listy , umieść w niej swoje parametry i przekaż tablicę lub listę w parametrze. Chcesz próbkę? –

0

Aby wysłać kilka parametrów: jego dość późno, by odpowiedzieć, ale może komuś pomóc. Możesz utworzyć niestandardową klasę, ustawić parametry w niej i wysłać jej obiekt jako parametr do strony docelowej.

Na przykład. Klasa zwyczaj:

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); 

A potem na stronie docelowej można odzyskać w funkcji OnNavigatedTo tak:

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
CustomDataClass myData2 = e.Parameter as CustomDataClass; 
string name = myData2.name; 
string email = myData2.email; 
} 

Nadzieję, że to pomaga.