Domanda

Sto utilizzando un controllo DataPager nella mia applicazione Silverlight. Ho cercapersone diversi per i diversi DataGrid e si desidera utilizzare lo stesso gestore di eventi per l'evento PageIndexChanged per tutti loro. Il delegato deve prendere un oggetto EventArgs come argomento. Posso usare questo oggetto per "tornare" per il controllo da cui è stato generato l'evento?

È stato utile?

Soluzione

Giuro che ho provato questo prima di aggiornare a f # 4 e Silverlight 4 e non ha funzionato, ma ora lo fa ...

http://connect.microsoft.com/VisualStudio/feedback/details/524645/f-add-event-handler-to-form-anonymous-function-is-required

Altri suggerimenti

Il parametro mittente è il riferimento all'oggetto che ha generato l'evento.

Quindi, se si vuole arrivare al DataPager questo dovrebbe farlo: -

 DataPager dp = (DataPager)sender;

Ecco le mie due scenari in F #:

Scenario 1

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

pager.PageIndexChanged.AddHandler(pageIndexChanged)

Quali yeilds l'errore

  

Questa espressione è stata dovrebbe avere   tipo EventHandler
  ma qui ha tipo
  EventHandler -> Unità

Scenario 2

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

pager.PageIndexChanged.Add(pageIndexChanged)

Il compilatore accetta questo, ma non posso fare nulla con args

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top