2010-09-20 39 views
5

Tôi có cửa sổ cha khởi động cửa sổ con, sau khi thực hiện một số lựa chọn/hoạt động trong cửa sổ con và tôi muốn gửi một số thông tin về cửa sổ chính (một lớp tùy chỉnh đối tượng), cách tốt nhất để thực hiện điều này trong WPF bằng cách sử dụng các tính năng được cung cấp bởi WPF là gì?Giao tiếp giữa cửa sổ phụ huynh và cửa sổ con trong wpf

Trả lời

5

Bạn có nhiều lựa chọn:

  • Bạn có thể sử dụng một sự kiện tùy chỉnh trong cửa sổ con của bạn rằng cửa sổ cha mẹ lắng nghe
  • Bạn có thể định nghĩa một delegate trong cửa sổ con tham chiếu đến một phương pháp trong các phụ huynh cửa sổ
  • Bạn có thể thay đổi hàm tạo cho cửa sổ con để tham chiếu đến cửa sổ chính và gọi phương thức trên cửa sổ chính bằng cách sử dụng tham chiếu
  • Bạn có thể sử dụng lớp VisualTreeHelper để có cửa sổ chính và gọi ethod trên tham chiếu đó
-1

Trích từ this link:

Cách đơn giản nhất tôi đã tìm thấy để truyền dữ liệu từ một cửa sổ con đến một cửa sổ mẹ là sử dụng một tài sản rộng ứng dụng. Thuộc tính này là một đối tượng và không phải là hình thức thanh lịch nhất để truyền dữ liệu từ cửa sổ con cho cha mẹ, nhưng đó là số lượng ít nhất của chương trình. Cách tốt nhất để thực hiện việc này là sử dụng lấy và đặt thuộc tính accessor.

Tạo một cửa sổ chính (MainWindow) Tạo một cửa sổ con (trong trường hợp này, Password)

Trong cửa sổ chính, cửa sổ con phải được hiển thị, chẳng hạn, trong một nút bấm. Cửa sổ này sẽ có một nút để làm điều gì đó, trong trường hợp này, nó sẽ xóa một bản ghi khỏi cơ sở dữ liệu.

private void btnDelete_Click(object sender, RoutedEventArgs e) 
{ 
    Password passwordentry = new Password(); 
    passwordentry.ShowDialog(); 

    if (Application.Current.Properties["PassGate"].ToString() == "mypassword") 
    { 
     Code, or call to delete the record; 
    } 
    Application.Current.Properties["PassGate"] = ""; 
} 

Trong cửa sổ con (Mật khẩu), thuộc tính cho ứng dụng là bộ sử dụng một hộp văn bản. Đây là một cửa sổ đơn giản có một hộp văn bản được gọi là PasswordTextBox và một vài nút, như Chấp nhận và Hủy.

private void AcceptButton_Click(object sender, RoutedEventArgs e) 
{ 
    Application.Current.Properties["PassGate"] = PasswordTextBox.Text; 
    this.Close(); 
} 
Các vấn đề liên quan