2010-08-11 32 views
5

Tôi có một StatusBar trong cửa sổ chính của mình và tôi cũng có một bản sao của UserControl trong cửa sổ chính. Từ trong các trình xử lý sự kiện trong số UserControl, tôi muốn cập nhật StatusBar trong cửa sổ chính. Điều gì sẽ là cách tốt nhất để làm điều này? Có cách nào để truy cập vào cá thể cửa sổ chính của tôi từ object sender hoặc RoutedEventArgs e trong trình xử lý sự kiện trong UserControl không?WPF, cập nhật thanh trạng thái trong cửa sổ chính từ trong UserControl

Edit: nhờ lukas's answerthis tutorial, tôi đã đưa ra các giải pháp sau đây:

Thêm vào UserControl tôi:

public delegate void UpdateStatusBarEventHandler(string message); 

public event UpdateStatusBarEventHandler UpdateStatusBar; 

Thêm vào constructor cửa sổ chính của tôi, sau khi InitializeComponent:

uct_requiredFields.UpdateStatusBar += updateStatusBar; 

Và tôi đã thêm phương pháp này cửa sổ chính của tôi:

private void updateStatusBar(string message) 
{ 
    sti_mainStatus.Content = message; 
} 

Sau đó, từ bên trong UserControl của tôi, tôi có thể làm như sau để cập nhật các thanh trạng thái:

if (null != UpdateStatusBar) 
{ 
    UpdateStatusBar("woot, message"); 
} 

Trả lời

5

tôi sẽ thêm một sự kiện vào UserControl qua đại biểu của riêng tôi hay định nghĩa

public event UpdateStatusBar UpdateBar; 

và sau đó tăng nó thông qua nút bấm trong UserControl (hoặc thứ khác mà u sử dụng)

private void UserContolButton_Click(object sender, RoutedEventArgs e) 
    { 
     if(UpdateBar != null) 
      UpdateBar(); // send here the message 
    } 

tôi giả sử u có một thể hiện của UserControl trong cửa sổ chính trong contructor

myUserControl.UpdateBar += MyMethodWhichUpdatesStatusBar(); 
Các vấn đề liên quan