2010-08-11 3 views
5

Ho un StatusBar nella mia finestra principale, e ho anche una copia di un UserControl nella mia finestra principale. Dall'interno dei gestori di eventi nel mio UserControl, voglio aggiornare lo StatusBar nella finestra principale. Quale sarebbe il modo migliore per farlo? C'è un modo per accedere all'istanza della mia finestra principale da object sender o RoutedEventArgs e in un gestore di eventi in UserControl?WPF, aggiornamento barra di stato nella finestra principale da UserControl

Edit: grazie a lukas's answer e this tutorial, mi si avvicinò con la seguente soluzione:

aggiunto ai UserControl:

public delegate void UpdateStatusBarEventHandler(string message); 

public event UpdateStatusBarEventHandler UpdateStatusBar; 

aggiunta al costruttore della mia finestra principale, dopo InitializeComponent:

uct_requiredFields.UpdateStatusBar += updateStatusBar; 

E ho aggiunto questo metodo alla mia finestra principale:

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

Poi, da dentro il mio UserControl, posso effettuare le seguenti operazioni per aggiornare la barra di stato:

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

risposta

5

vorrei aggiungere un evento al UserControl tramite il mio proprio delegato o definiti

public event UpdateStatusBar UpdateBar; 

e poi salire tramite pulsante scatto in UserControl (o altra cosa che uso u)

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

I assumere u ha un'istanza UserControl nella finestra principale in contructor

myUserControl.UpdateBar += MyMethodWhichUpdatesStatusBar();