¿Cómo planteo un evento en un control de usuario y lo capturo en la página principal?

Tengo un UserControl y debo notificar a la página principal que se hizo clic en un botón del UserControl . ¿Cómo planteo un evento en UserControl y lo veo en la página principal? Intenté usar static , ¡y muchos me sugirieron que fuera a eventos!

Echa un vistazo a Event Bubbling – http://msdn.microsoft.com/en-us/library/aa719644%28vs.71%29.aspx

Editar para agregar un ejemplo rápido: (y edición adicional para mejorar el formateo)

Control de usuario

 public event EventHandler StatusUpdated; private void FunctionThatRaisesEvent() { //Null check makes sure the main page is attached to the event if (this.StatusUpdated != null) this.StatusUpdated(this, new EventArgs()); } 

Página principal / Formulario

 public void MyApp() { //USERCONTROL = your control with the StatusUpdated event this.USERCONTROL.StatusUpdated += new EventHandler(MyEventHandlerFunction_StatusUpdated); } public void MyEventHandlerFunction_StatusUpdated(object sender, EventArgs e) { //your code here } 

Solo agrega un evento bajo tu control:

 public event EventHandler SomethingHappened; 

y plantearlo cuando desee notificar a los padres:

 if(SomethingHappened != null) SomethingHappened(this, new EventArgs); 

Si necesita EventArgs personalizados, pruebe EventHandler lugar con T beeing un tipo derivado de EventArgs .

O si está buscando una solución más desacoplada, puede usar un modelo de editor / suscriptor de messenger como MVVM Light Messenger aquí.