2014-07-25 16 views
10

Tôi có cùng câu hỏi giống như Passing data from page to page, nhưng chỉ dành cho Windows Phone 8.1 (trái ngược với Windows Phone 7). Đây là câu hỏi:Chuyển dữ liệu từ trang này sang trang khác cho Windows Phone 8.1

Tôi đang tìm việc thực hành tốt nhất về cách truyền dữ liệu từ trang này sang trang.

Trong trang A Tôi có nút kích hoạt Trang B. Trên trang B Tôi có 6 hộp văn bản cho phép người dùng nhập thông tin. Khi người sử dụng được thực hiện, nhấp chuột vào một nút mà mang họ trở lại trang A.

Tôi muốn truyền dữ liệu lại cho rằng trang A.

Tôi đã nhìn thấy gợi ý:

xây dựng Tài liệu XML và lưu vào Bộ nhớ riêng biệt sử dụng lớp Ứng dụng để lưu trữ thông tin trong thuộc tính chuyển nó như chuỗi truy vấn Tôi đang tìm phương pháp hay nhất. Có một trong đó Microsoft khuyến cáo hoặc một trong đó thường được chấp nhận như là cách tốt nhất?

Cảm ơn

Trả lời

16

Trong WP8.1 Runtime - cho Silverlight, the methods used in WP8.0 vẫn nên làm việc - bạn có vài choces:

  • là người đầu tiên và có lẽ là cách dễ nhất là sử dụng Navigate with parameter - bạn không phải chuyển đổi nó thành chuỗi nếu đó là loại có thể được nối tiếp:

    // 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; 
    } 
    
  • bạn có thể sử dụng một số đối tượng tĩnh để truyền dữ liệu của bạn dọc theo App

  • cuối cùng như bạn đã đề cập đến bạn có thể lưu dữ liệu của bạn trong: LocalSettings, LocalStorage, LocalCache - nghĩ trong trường hợp này bạn cũng sẽ phải serialize nó vào XAML, Json hoặc khác.

Lưu ý rằng bạn cũng sẽ phải xử lý tạm ngưng/tiếp tục ứng dụng - vì vậy nó sẽ phù hợp để lưu dữ liệu của bạn khi ứng dụng bị tạm ngưng và tải khi ứng dụng được tiếp tục. Bạn nên nhớ rằng OnNavigatedTo không được gọi khi ứng dụng được tiếp tục.


Điều trên là về điều hướng thông thường (chuyển tiếp). Nếu bạn muốn điền vào một số dữ liệu trong trang trước, sau đó bạn có một vài lựa chọn:

  • vượt qua một handler vào một trang trước, vì vậy bạn có thể truy cập các biến công cộng/tài sản từ hiện tại Page,
  • sử dụng một biến tĩnh/tài sản - có thể là một singleton
  • một lần nữa sử dụng file/cài đặt

Lưu ý rằng một lần nữa hai phương pháp đầu tiên có một nhược điểm là ứng dụng có thể sụp đổ sau khi bị tạm ngưng.Tiết kiệm cho các tập tin có thể tốt hơn ở đây, suy nghĩ cần một số công việc nhiều hơn và xử lý thích hợp.

+0

nếu chúng tôi muốn chuyển nhiều thông số thì phương pháp nào tốt hơn? –

+0

@KinjanBhavsar Nó phụ thuộc vào loại tham số của bạn, mức độ quan trọng của chúng và các triển khai khác. – Romasz

+0

Tôi muốn vượt qua một đối tượng của lớp và một paramater chuỗi đó là từ một số lớp khác. –

0

--Trước Tạo một lớp

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

--then Bạn có thể điều hướng trong trang treo giá trị

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

--then bắt giá trị mà đi qua trong một trang

var passedData = e.Parameter as PassedData; 

emailtxt.Text = passedData.email; 
Các vấn đề liên quan