2010-11-10 7 views
23

Trong Phone 7 ứng dụng Silverlight Windows tôi gọi một trang mới sử dụngWP7: Chuyển tham số sang trang mới?

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

Bây giờ tôi muốn truyền tham số cho các trang mới. Tôi hiểu một tham số đơn giản có thể được thông qua sử dụng:

NavigationService.Navigate(new Uri("/View/TilgungsratePage.xaml?id=4711", UriKind.Relative)); 

và đọc trong trang mới sử dụng

protected override void OnNavigatedTo(Microsoft.Phone.Navigation.PhoneNavigationEventArgs e) 
{ 
    base.OnNavigatedTo(e); 
    String id = NavigationContext.QueryString["id"]; 
} 

Đối với các thông số đơn giản này là ok, nhưng làm thế nào để vượt qua một danh sách?
Đối tượng phức tạp?
Mọi thứ trừ giá trị đơn giản?

+0

Hãy xem bài này cũng như: [ WP7 Master - Điều hướng chi tiết với Pattern Repository] (http://windowsphonegeek.com/articles/WP7-Master---Detail-Navigation-with-Repository-Pattern) –

+1

Kiểm tra phương thức cuối cùng trên liên kết này: http: // www.c-sharpcorner.com/UploadFile/deepak.sharma00/different-ways-of-passing-values-between-windo ws-phone-7-pag/ –

+0

Hãy xem câu hỏi này http://stackoverflow.com/questions/12444816/how-to-pass-values-parameters-between-xaml-pages –

Trả lời

21

Trong cuốn sách của ông "Programming Windows Phone 7" (chương 6, phần 3, "Chia sẻ dữ liệu giữa các trang") Charles Petzold khuyên bạn nên ủng hộ số tiền trong lớp App (bắt nguồn từ Application). Mỗi trang có quyền truy cập vào nó qua Application.Current. Cũng thú vị là từ điển PhoneApplicationService.Current.State. Đó là hữu ích cho tombstoning. Toàn bộ chương có thể thú vị để đọc.

+0

Và bạn không muốn để có trạng thái toàn cầu, có các phương pháp khác http://stackoverflow.com/questions/12444816/how-to-pass-values-parameters-between-xaml-pages –

0

hãy xem cách tôi đã triển khai điều hướng trong PhoneCore Framework: A framework for building of WP7 application. Một thời gian ngắn, tôi đã xây dựng dịch vụ điều hướng của mình trên đầu trang của điều hướng WP7. Nó sử dụng ánh xạ trang tùy chỉnh và cho phép chuyển thông số tùy chỉnh để xem mô hình tự động.

-1

Bạn nên lưu đối tượng vào IsolatedStorage.

Chỉ cần tuần tự hóa với thư viện Json.net và lưu chuỗi vào IsolatedStorage. Trên trang tiếp theo lấy chuỗi từ IsolatedStorage và chuyển nó trở lại đối tượng bạn muốn với thư viện json.net!

+0

Tôi nghĩ rằng đây là cách quá mức cần thiết để vượt qua giữa các chế độ xem.Tốt hơn nhiều là đưa dữ liệu vào đối tượng Ứng dụng. – Nathan

0

Sử dụng các biến toàn cầu, tạo ra một lớp mới cho GlobalVariables:

public static class GlobalVariables 
{ 
    public static string my_string = ""; 
    public static int my_int = -1; 
} 

Sau đó, bạn có thể truy cập vào các lớp biến toàn cầu cho các trang khác nhau:

GlobalVariables.variable_name;