2014-07-25 10 views
10

Mam dokładnie to samo pytanie, co Passing data from page to page, ale tylko dla systemu Windows Phone 8.1 (w przeciwieństwie do systemu Windows Phone 7). Oto pytanie:Przekazywanie danych ze strony na stronę dla systemu Windows Phone 8.1

Poszukuję najlepszej praktyki przekazywania danych z jednej strony na drugą.

Na stronie A Mam przycisk, który odpala Strona B. Na stronie B Mam 6 pól tekstowych, które umożliwiają użytkownikowi wprowadzanie informacji. Gdy użytkownik jest zrobione, kliknij na przycisku, który przynosi im powrót do strony A.

Chcę przekazać te dane z powrotem do strony A.

Widziałem sugestii:

budowie Dokumenty XML i zapisywanie w izolowanej pamięci używają klasy App do przechowywania informacji we właściwościach podaj ją jako ciąg zapytania Szukam najlepszej praktyki. Czy jest taki, który Microsoft zaleca lub który jest ogólnie akceptowany jako najlepszy sposób?

Dzięki

Odpowiedz

16

W WP8.1 Runtime - dla Silverlight, the methods used in WP8.0 nadal powinno działać - masz kilka choces:

  • pierwszy i prawdopodobnie najłatwiejszym sposobem jest użycie Navigate with parameter - nie musisz konwertować go na string, jeśli jest to typ możliwy do serializacji:

    // let's assume that you have a simple class: 
    public class PassedData 
    { 
        public string Name { get; set; } 
        public int Value { get; set; } 
    } 
    
    // then you navigate like this: 
    Frame.Navigate(typeof(Page1), new PassedData { Name = "my name", Value = 10 }); 
    
    // and in target Page you retrive the information: 
    protected override void OnNavigatedTo(NavigationEventArgs e) 
    { 
        PassedData data = e.Parameter as PassedData; 
    } 
    
  • można użyć kilka statycznych obiektów przekazać swoje dane wraz z App

  • w końcu jak już wspomniano można zapisać dane w: LocalSettings, localStorage, LocalCache - myślał w tym przypadku Będziesz także musiał serializować go do XAML, Json lub innych.

Pamiętaj, że będziesz musiał również zawiesić/wznowić zawieszanie/odinstalowywanie aplikacji - dlatego warto zapisać dane, gdy aplikacja jest zawieszana i ładowana po jej wznowieniu. Pamiętaj, że OnNavigatedTo nie jest wywoływany, gdy aplikacja jest wznawiana.


Powyższe dotyczy normalnej nawigacji (do przodu). Jeśli chcesz, aby wypełnić jakieś dane w poprzedniej strony, to masz kilka opcji:

  • zdać obsługi do poprzedniej strony, dzięki czemu można uzyskać dostęp do zmiennych publicznych/właściwości od bieżącej strony
  • użyć statyczna zmienna/właściwość - może pojedyncza
  • ponownie używać plików/Ustawienia

Zauważ, że znowu dwie pierwsze metody ma tę wadę, że aplikacja może ulec awarii po zawieszeniu.Zapisywanie do plików może być tutaj lepsze, myśl wymaga więcej pracy i właściwej obsługi.

+0

jeśli chcemy przekazać więcej niż jeden parametr, to jakie podejście jest lepsze? –

+0

@KinjanBhavsar To zależy od typów parametrów, ich znaczenia i innych implementacji. – Romasz

+0

Chcę przekazać obiekt klasy i paramater ciąg, który jest z innej klasy. –

0

--first Utwórz klasę

public class PassedData 
{ 
    public string email { get; set; } 
} 

--then Można poruszać się po stronach wiszące wartość

Frame.Navigate(typeof(Frame2), new PassedData { email = emailtxt.Text }); 

--then złapać wartość, która przechodzi w inną stronę

var passedData = e.Parameter as PassedData; 

emailtxt.Text = passedData.email; 
Powiązane problemy