2010-08-11 13 views
5

Mam główne okno w postaci StatusBar, a także mam kopię pliku UserControl w moim głównym oknie. Z poziomu programów obsługi zdarzeń w moim UserControl, chcę zaktualizować StatusBar w głównym oknie. Jaki byłby najlepszy sposób na zrobienie tego? Czy istnieje sposób uzyskania dostępu do instancji mojego głównego okna z object sender lub RoutedEventArgs e w procedurze obsługi zdarzeń w UserControl?WPF, aktualizowanie paska stanu w oknie głównym z poziomu UserControl

Edit: dzięki lukas's answer i this tutorial, wymyśliłem następujące rozwiązanie:

Dodane do moich UserControl:

public delegate void UpdateStatusBarEventHandler(string message); 

public event UpdateStatusBarEventHandler UpdateStatusBar; 

Dodano do konstruktora mojego głównego okna, po InitializeComponent:

uct_requiredFields.UpdateStatusBar += updateStatusBar; 

I dodałem tę metodę moim głównym oknie:

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

Następnie od wewnątrz moich UserControl mogę wykonać następujące czynności, aby zaktualizować pasek stanu:

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

Odpowiedz

5

chciałbym dodać zdarzenie do UserControl za pośrednictwem własnego pełnomocnika lub zdefiniowanego

public event UpdateStatusBar UpdateBar; 

a następnie wznieść go za pomocą kliknięcia przycisku w UserControl (lub inna rzecz, że u używać)

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

zakładam u mieć instancję UserControl w oknie głównym w contructor

myUserControl.UpdateBar += MyMethodWhichUpdatesStatusBar(); 
Powiązane problemy