c# silverlight events user-controls raiseevent

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



silverlight events (3)

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 }


O si está buscando una solución más desacoplada, puede usar un modelo de editor / suscriptor de messenger como MVVM Light Messenger 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<T> lugar con T beeing un tipo derivado de EventArgs .