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
.