2010-08-11 35 views
5

我的主窗口中有一個StatusBar,我的主窗口中也有一個UserControl的副本。從我的UserControl事件處理程序中,我想在主窗口中更新StatusBar。這樣做的最好方法是什麼?有沒有辦法在UserControl的事件處理程序中從object senderRoutedEventArgs e訪問主窗口的實例?WPF,在UserControl內更新主窗口中的狀態欄

編輯:感謝lukas's answerthis tutorial,我想出了以下解決方案:

添加到我的UserControl

public delegate void UpdateStatusBarEventHandler(string message); 

public event UpdateStatusBarEventHandler UpdateStatusBar; 

添加到我的主窗口的構造函數,InitializeComponent後:

uct_requiredFields.UpdateStatusBar += updateStatusBar; 

我加了這個方法我的主要窗口:

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

然後,從我UserControl內,我可以做以下更新狀態欄:

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

回答

5

我將通過我自己的委託添加一個事件,用戶控件或定義

public event UpdateStatusBar UpdateBar; 

,然後超越它通過點擊按鈕在用戶控件(或其他東西u使用)

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

我認爲ü在構造器具有用戶控件的一個實例,在主窗口

myUserControl.UpdateBar += MyMethodWhichUpdatesStatusBar();