2010-08-11 7 views
5

Tengo un StatusBar en mi ventana principal, y también tengo una copia de UserControl en la ventana principal. Desde dentro de los controladores de eventos en mi UserControl, quiero actualizar el StatusBar en la ventana principal. ¿Cuál sería la mejor manera de hacer esto? ¿Hay alguna forma de obtener acceso a la instancia de mi ventana principal desde object sender o RoutedEventArgs e en un controlador de eventos en UserControl?WPF, actualizando la barra de estado en la ventana principal desde UserControl

Editar: gracias a lukas's answer y this tutorial, me ocurrió con la siguiente solución:

añadido a mis UserControl:

public delegate void UpdateStatusBarEventHandler(string message); 

public event UpdateStatusBarEventHandler UpdateStatusBar; 

Añadido al constructor de la ventana principal, después de InitializeComponent:

uct_requiredFields.UpdateStatusBar += updateStatusBar; 

Y agregué este método a mi ventana principal:

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

Entonces, desde dentro de mi UserControl, yo puedo hacer lo siguiente para actualizar la barra de estado:

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

Respuesta

5

me gustaría añadir un evento para UserControl a través de mi propio delegado o definido

public event UpdateStatusBar UpdateBar; 

y luego se levantan ella a través de clic de botón en el control de usuario (u otra cosa que el uso de u)

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

Asumo u tiene una instancia de control de usuario en la ventana principal en contructor

myUserControl.UpdateBar += MyMethodWhichUpdatesStatusBar(); 
Cuestiones relacionadas