5

Ich verwende ein DataPager-Steuerelement in meiner Silverlight-Anwendung. Ich habe verschiedene Pager für verschiedene DataGrids und möchte den gleichen Event-Handler für das PageIndexChanged-Event für alle von ihnen verwenden. Der Delegat muss ein EventArgs-Objekt als Argument verwenden. Kann ich dieses Objekt verwenden, um zu dem Steuerelement zurückzukehren, von dem das Ereignis ausgelöst wurde?DataPager EventArgs

Antwort

0

Der Absenderparameter ist der Verweis auf das Objekt, das das Ereignis ausgelöst hat.

Also, wenn Sie auf die DataPager erhalten möchten dies sollte es tun: -

DataPager dp = (DataPager)sender; 
+0

Die Pageindexchanged Ereignis akzeptiert nur einen Vertreter einer Arg- und es muss vom Typ sein EventArg – PhilBrown

+0

@philbrowndotcom: Umm ... wo bekommen Sie das her? Es ist ein Ereignis es hat die Signatur 'public event EventHandler PageIndexChanged' daher akzeptiert es einen Delegaten von' void (Objekt, EventArgs) ' – AnthonyWJones

+0

Ich vermisse hier definitiv etwas. Ich arbeite in F #, ich weiß nicht, was für einen Unterschied das macht. Alle anderen Handler, die ich programmiert habe, haben einen RoutedEventHandler als einzigen Argon genommen und ich konnte OriginalSource benutzen, um die Feuerkontrolle zu bekommen. Ich habe auch .Add anstelle von .AddHandler verwendet. Ich bin ziemlich neu in .NET, also ist dieses Zeug immer noch etwas verschwommen für mich. – PhilBrown

0

Hier sind meine beiden Szenarien in F #:

Szenario 1

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

pager.PageIndexChanged.AddHandler(pageIndexChanged) 

Welche der yeilds Fehler

Dieser exp ression wurde erwartet Typ Eventhandler
aber hier zu haben hat Typ
Eventhandler -> unit

Szenario 2

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

pager.PageIndexChanged.Add(pageIndexChanged) 

Der Compiler akzeptiert dies, aber ich kann mit args nichts tun

Verwandte Themen