2011-10-26 63 views
6

Tôi có hai cửa sổ WPF. Một là cửa sổ chính và cửa sổ kia là một số cửa sổ cấu hình. Tôi muốn cửa sổ cấu hình gửi và sự kiện đến cửa sổ chính. Bất kỳ ý tưởng nào tôi hoàn thành nó?Gửi sự kiện giữa 2 cửa sổ WPF

Đây là cách để tạo và mở cửa sổ cấu hình:

private void MenuItem_Click(object sender, RoutedEventArgs e) 
    { 
     ConfigPage Confwin= new ConfigPage(); 
     Confwin.Owner = this; 
     Confwin.Show(); 
    } 
+0

ai đang tạo Cửa sổ cấu hình? Bạn đang sử dụng MVVM? – sll

Trả lời

15

Bạn có thể xác định bất kỳ sự kiện trong lớp cửa sổ con của bạn và đăng ký nó trước khi hiển thị cửa sổ.

Main Window

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 

     this.Loaded += new RoutedEventHandler(MainWindow_Loaded); 
    } 

    void MainWindow_Loaded(object sender, RoutedEventArgs e) 
    { 
     Child childWindow = new Child(); 
     childWindow.MyEvent += new EventHandler(childWindow_MyEvent); 

     childWindow.ShowDialog(); 
    } 

    void childWindow_MyEvent(object sender, EventArgs e) 
    { 
     // handle event 
     MessageBox.Show("Handle"); 
    } 
} 

cửa sổ Child

public partial class Child : Window 
{ 
    // define event 
    public event EventHandler MyEvent; 

    protected void OnMyEvent() 
    { 
     if (this.MyEvent != null) 
      this.MyEvent(this, EventArgs.Empty); 
    } 

    public Child() 
    { 
     InitializeComponent(); 

     this.Loaded += new RoutedEventHandler(Child_Loaded); 
    } 

    void Child_Loaded(object sender, RoutedEventArgs e) 
    { 
     // call event 
     this.OnMyEvent(); 
    } 
} 
+2

Rất đẹp và sạch sẽ. Mã cũng rất đơn giản để hiểu cấu trúc cơ bản của xử lý sự kiện. +1 từ tôi ... – phil13131

+1

Cũng muốn gửi lời cảm ơn nhanh chóng, điều này đã giúp tôi hiểu những điều cơ bản về việc thiết lập trình xử lý sự kiện của riêng tôi, +1 khác. – unrealtrip

2

Bạn nên sử dụng mô hình tổ chức sự kiện Yếu. Nó được tích hợp nếu bạn sử dụng Prism hoặc MVVMLight.

Nếu không, bạn sẽ phải thực hiện nó cho mình: msdn

Lý do cho điều này, là nó tách riêng cửa sổ cấu hình từ cửa sổ chính.
Họ không nên biết về nhau để cửa sổ cấu hình có thể sử dụng lại (và bất kỳ đối tượng nào còn sống trong ứng dụng của bạn cũng có thể nghe sự kiện).

+0

+1 điểm tốt, lăng kính trông đầy hứa hẹn – walter

Các vấn đề liên quan