Chia sẻ dữ liệu giữa các trang qua lớp App

Chia sẻ dữ liệu giữa các trang qua lớp App

 

Đây cũng là cách thứ 2 để mình có thể truyền dữ liệu khi chuyển trang.

Chuyển trang cơ bản xem tại :

https://vkhangyang.wordpress.com/2011/09/10/chuy%E1%BB%83n-trang-c%C6%A1-b%E1%BA%A3n-trong-window-phone/

Khi tạo mới 1 project Window Phone Application, bạn sẽ thấy ngoài trang giao diện mà ta thường hay thao tác MainPage.xaml , project còn file App.xaml kèm 1 file code-behind như hình bên dưới.

clip_image001

Trang này cung cấp 1 lớp tên là App mà đặc biệt là mọi trang khác của mình đều có thể dễ dàng truy cập đến. Vì vậy đây là nơi thích hợp để bạn chứa dữ liệu cần chia sẻ giữa các trang với nhau , hay gọi cách khác đây chính là dữ liệu toàn cục.

Lớp App này kế thừa từ lớp Application. Các trang khác có thể truy xuất lớp này thông qua thuộc tính Application.Current kiểu Application. Nhưng để thuộc tính đó có thể truy xuất các dữ liệu toàn cục bạn viết trong lớp App thì bạn phải thực hiện việc ép kiểu về kiểu dẫn xuất App.

Ví dụ:

Mình cũng có 2 trang MainPage.xamlPage1.xaml như sau:

clip_image003

Khi Click vào Button phía MainPage thì chuyển sang trang kia và TextBlock của trang kia sẽ hiển thị nội dung TextBox bên MainPage

Thực hiện:

Sau khi tạo giao diện, mình vào trang code-behind App.xaml.cs mà lúc đầu mình có giới thiệu và thêm vào 1 thuộc tính kiểu string cho lớp App để lưu trữ dữ liệu mình cần truyền.

public string text { get; set; }

 

Kế tiếp, vào phía MainPage , cài đặt sự kiện click cho Button như sau:

        private void button1_Click(object sender, RoutedEventArgs e)

        {

            (Application.Current as App).text = textBox1.Text;

            NavigationService.Navigate(new Uri(“/Page1.xaml”,UriKind.Relative));

        }

 

Ý nghĩa đoạn code là đầu tiên lưu nội dung của textBox1 vào thuộc tính text lúc nãy mình đã tạo trong lớp App. Sau đó đơn thuần là sử dụng Navigate để chuyển trang.

Ở phía Page1, mình sẽ override phương thức OnNavigatedTo. Trong đó, mình sẽ lấy dữ liệu được lưu trong thuộc tính text ra và gán cho nội dung TextBlock như sau:

        protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)

        {

            textBlock1.Text = (Application.Current as App).text;

            base.OnNavigatedTo(e);

        }

 

Vậy là xong. Thật đơn giản đúng không nào !

One response to “Chia sẻ dữ liệu giữa các trang qua lớp App

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất /  Thay đổi )

Google photo

Bạn đang bình luận bằng tài khoản Google Đăng xuất /  Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất /  Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất /  Thay đổi )

Connecting to %s