Cách thực hiện

Cách thực hiện

s6666 đăng nhập,nổ hủ tặng code

Chia sẻ biến giữa App.xaml.cs và MainPage.xaml.cs trong UWP

Cập nhật lần cuối: 2018-11-25
Lượt xem: 8800
Chuyên mục: UWP

Bước 1: Khai báo biến tĩnh trong lớp App tại tệp App.xaml.cs
Để tạo một biến có thể truy cập từ mọi nơi trong ứng dụng, bạn có thể sử dụng thuộc tính static. Trong ví dụ dưới đây, chúng ta sẽ khai báo một biến counter kiểu int và gán giá trị khởi tạo là 10:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
sealed partial class App : Application
{
    // Khai báo biến tĩnh
    public static int counter { get; set; }

    public App()
    {
        this.InitializeComponent();
        this.Suspending += OnSuspending;

        // Gán giá trị ban đầu cho biến
        App.counter = 10; 
    }
}

Bước 2: Truy cập biến counter từ MainPage.xaml.cs
Trong lớp MainPage, bạn có thể dễ dàng đọc giá trị của biến tĩnh thông qua tên lớp App:

1
2
3
4
5
6
7
public MainPage()
{
    this.InitializeComponent();

    // Đọc giá trị từ biến tĩnh và ghi log
    Debug.WriteLine(App.counter); 
}

Giải thích hoạt động

  • Biến tĩnh (static): Khi khai báo một biến với từ khóa static, biến này sẽ thuộc về lớp App thay vì từng đối tượng cụ thể. Do đó, bạn có thể truy cập nó mà không cần tạo thể hiện của lớp.
  • Độ bền của biến: Biến counter sẽ tồn tại suốt vòng đời ứng dụng, trừ khi ứng dụng bị đóng hoàn toàn. Điều này giúp dữ liệu được chia sẻ giữa các trang hoặc thành phần khác nhau.

Lưu ý quan trọng

  1. Tránh rò rỉ bộ nhớ: Sử dụng biến tĩnh có thể dẫn đến việc giữ tham chiếu đến các đối tượng không còn cần thiết. Hãy kiểm soát cẩn thận quy trình hủy hoặc giải phóng tài nguyên.
  2. An toàn đa luồng: Nếu ứng dụng của bạn sử dụng đa luồng, cần đồng bộ hóa việc truy cập biến tĩnh để tránh xung đột dữ liệu.
  3. Giải pháp thay thế: Ngoài biến tĩnh, bạn có thể sử dụng các phương pháp như:
    • Singleton Pattern: Tạo một lớp duy nhất quản lý trạng thái chung.
    • Application.Properties: Lưu trữ dữ liệu tạm thời trong từ điển Application.Current.Properties.

Ví dụ mở rộng

Giả sử bạn muốn cập nhật giá trị counter từ một trang khác (ví dụ: SecondPage.xaml.cs):

1
2
3
4
5
// Trong SecondPage.xaml.cs
App.counter = 20; // Cập nhật giá trị biến

// Trong MainPage.xaml.cs, bạn sẽ nhận được giá trị mới
Debug.WriteLine(App.counter); // Kết quả: 20

Phương pháp này cực kỳ hữu ích khi bạn cần duy trì trạng thái ứng dụng hoặc chia sẻ dữ liệu đơn giản giữa các lớp mà không cần xây dựng cơ chế phức tạp.

comments powered by Disqus
Built with Hugo
Theme Stack thiết kế bởi Jimmy