2011-11-14 5 views
6

Ứng dụng của tôi hoàn toàn nhận biết chủ đề. Khi ứng dụng của tôi bị hủy kích hoạt và người dùng thay đổi chủ đề từ tối sang ánh sáng (giả sử) và trở về ứng dụng của tôi, chủ đề không được làm mới. Mặc dù chủ đề điện thoại là ánh sáng ứng dụng của tôi vẫn còn tối.Làm thế nào để phát hiện khi chủ đề được thay đổi trong WP7?

Tôi đã thực hiện một số lần thử nhưng họ báo cáo cùng một giá trị. Tôi đã khai báo một biến được gọi là isDarkThemeSelected, lưu giá trị trong sự kiện đã hủy kích hoạt, thay đổi chủ đề và nhập lại vào ứng dụng của tôi. Nhưng khi sự kiện được kích hoạt được nâng lên thì giá trị biến vẫn giữ nguyên.

Bạn có giải pháp nào không?

+2

Bạn có sao lưu dữ liệu của mình khi điều hướng ra khỏi ứng dụng không, nếu có ..... là sao lưu chủ đề có thể gây ra vấn đề như vậy không. – Keeano

Trả lời

6

Thêm mã này để xây dựng trang chính của bạn:

var v = (Visibility)Resources["PhoneLightThemeVisibility"]; 
Debug.WriteLine("Using " + (v == Visibility.Visible ? "light" : "dark") + " theme"); 

(Nó sẽ phát hiện các chủ đề hiện tại và ghi vào sổ Output cái nào nó được.)

Sau đó khởi động ứng dụng, nhìn vào Đầu ra trong Visual Studio, đóng ứng dụng, thay đổi chủ đề, khởi động ứng dụng và xem lại. Nếu nó nói những điều khác nhau lần đầu tiên và lần thứ hai thì ứng dụng của bạn không phải là nhận thức theo chủ đề như bạn nghĩ.

Chỉnh sửa: Dường như điều này không phải lúc nào cũng hoạt động do Mango bug. Chủ đề vẫn giữ nguyên khi bạn điều hướng trở lại cho ứng dụng sau khi thay đổi chủ đề. Chỉ khi người dùng khởi động lại ứng dụng từ danh sách ứng dụng mà chủ đề mới được áp dụng.

+1

Cảm ơn bạn đã trả lời, tôi đã thử cùng một mã, Nó cung cấp cho chủ đề thích hợp nhưng Khi ứng dụng của tôi bị vô hiệu hoá và người dùng thay đổi chủ đề và kích hoạt ứng dụng của tôi, thời gian này cung cấp thông tin chủ đề sai. – Santhu

+0

Sau đó, bạn đang chạy mã này ở một vị trí sai. Bạn sẽ nhận thấy rằng chủ đề không thay đổi ngay lập tức, nhưng thay vào đó lại kích hoạt lại chủ đề ở lần khởi chạy trước đó và sau đó thay đổi chủ đề mới sau khi hiển thị giao diện người dùng ít nhất một lần. Bất kể, nó không phải là cần thiết để kiểm tra các chủ đề, trừ khi bạn thiết kế ứng dụng của bạn rất kém. –

+0

@santhosh Bạn nói đúng, tôi đã cập nhật câu trả lời của mình. Đó là một lỗi. –