2011-10-26 35 views
9

phương pháp hay nhất để chuyển giá trị giữa trang trong WPF là gì?Cách chuyển giá trị giữa hai trang trong WPF

nhờ

+0

Tôi thực hiện một vài phương pháp khác nhau để chuyển các tham số trong [câu trả lời này] (http://stackoverflow.com/a/12444817/200442). Nó đi qua sử dụng các tham số chuỗi truy vấn, các đối số hàm tạo và một vài đối số khác. –

+1

có thể trùng lặp của [Làm thế nào để vượt qua giá trị (tham số) giữa các trang XAML?] (Http://stackoverflow.com/questions/12444816/how-to-pass-values-parameters-between-xaml-pages) –

Trả lời

8

Điểm tham chiếu cố định của bạn là đối tượng Ứng dụng. Bạn có thể lưu trữ nội dung trong bộ sưu tập Thuộc tính:

string myText = (string)Application.Current.Properties["test"]; 

Hoặc bạn có thể thêm bất kỳ loại dữ liệu nào vào lớp Ứng dụng có nguồn gốc của bạn.

+9

cách tiếp cận này có rủi ro đối tượng ứng dụng của bạn trở thành một đối tượng Thiên Chúa. – Joe

5

Có lẽ thông qua mô hình trong một MVVM architecture.

+0

Nhưng ở đâu bạn lưu trữ các mô hình? Đó là một ý tưởng hay nhưng chỉ di chuyển vấn đề xung quanh. –

+0

@Henk, một câu trả lời ngắn cho một câu hỏi ngắn. Nhưng thiết kế một ứng dụng MVVM là một chủ đề lớn, liên kết vui lòng được cung cấp bởi Klaus trong câu trả lời của tôi là một điểm khởi đầu tốt. – Joe

1

giống như Windows Biểu mẫu:

không chỉ sử dụng các biến toàn cầu hoặc điều khiển của trang truy cập từ một trang khác. nếu bạn có hai trang cần chia sẻ cùng một đối tượng, ví dụ: Student, có phương thức như SetStudent(Student student) trong trang của bạn hoặc sử dụng thuộc tính để một trang có thể chuyển đối tượng Sinh viên sử dụng phương thức đó. Bạn cũng có thể có được tất nhiên, nếu cần thiết.

4

Ví dụ biến name = DeptName

Khai báo biến trong App.xaml tức

public string DeptName { get; set; }

gán giá trị trong trang 1 của bạn

(App.Current as App).DeptName = "test"; 

sau đó gọi giá trị trong trang của bạn-2

string selected_dept = (App.Current as App).DeptName; 
Các vấn đề liên quan