2010-06-10 11 views
5

Estoy usando un control DataPager en mi aplicación silverlight. Tengo buscapersonas diferentes para DataGrids diferentes y quiero usar el mismo controlador de eventos para el evento PageIndexChanged para todos ellos. El delegado debe tomar un objeto EventArgs como argumento. ¿Puedo usar este objeto para "volver" al control desde el cual se disparó el evento?DataPager EventArgs

Respuesta

0

El parámetro del remitente es la referencia del objeto que activó el evento.

Así que si quieres llegar al DataPager esto debe hacerlo: -

DataPager dp = (DataPager)sender; 
+0

El evento PageIndexChanged sólo acepta un delegado de uno arg y debe ser de tipo EventArg – PhilBrown

+0

@philbrowndotcom: Umm ... ¿dónde te va eso? Es un evento que tiene la firma 'public event EventHandler PageIndexChanged' por lo que acepta un delegado de' void (object, EventArgs) ' – AnthonyWJones

+0

Definitivamente me falta algo aquí. Estoy trabajando en F #, no sé la diferencia que hace. Todos los demás controladores que he codificado tomaron un RoutedEventHandler como Arg solitario y pude usar OriginalSource para obtener el control de disparo. También he estado usando .Add en lugar de .AddHandler. Soy bastante nuevo en .NET, así que estas cosas todavía son un poco confusas para mí. – PhilBrown

0

Aquí están mis dos escenarios en F #:

Escenario 1

let pageIndexChanged (args : EventHandler<EventArgs>) = 
    // Do something 
    () 

pager.PageIndexChanged.AddHandler(pageIndexChanged) 

Qué yeilds la error

Este exp Se espera resión tener tipo de manejador de sucesos
pero aquí tiene tipo
manejador de sucesos -> Unidad de

Escenario 2

let pageIndexChanged (args : EventArgs) = 
    // Do something 
    () 

pager.PageIndexChanged.Add(pageIndexChanged) 

El compilador acepta esto, pero no puede hacer nada con args

Cuestiones relacionadas