5

Używam kontrolki DataPager w mojej aplikacji silverlight. Mam różne pagery dla różnych DataGrids i chcę użyć tej samej obsługi zdarzeń dla zdarzenia PageIndexChanged dla wszystkich z nich. Delegat musi traktować obiekt EventArgs jako argument. Czy mogę użyć tego obiektu do "powrotu" do kontroli, z której wydarzenie zostało wywołane?DataPager EventArgs

Odpowiedz

0

Parametr nadawcy jest odniesieniem do obiektu, który wystrzelił zdarzenie.

Więc jeśli chcesz dostać się do DataPager powinno to zrobić: -

DataPager dp = (DataPager)sender; 
+0

PageIndexChanged wydarzenie akceptuje tylko jednego delegata arg i musi być typu EventArg – PhilBrown

+0

@philbrowndotcom: Umm ... gdzie się masz, że od? Jest to zdarzenie, które ma sygnaturę 'public event EventHandler PageIndexChanged', więc akceptuje delegata' void (object, EventArgs) ' – AnthonyWJones

+0

Na pewno czegoś tutaj nie ma. Pracuję w F #, nie wiem, jaka to różnica. Wszystkie inne programy obsługi, które zakodowałem, wzięły RoutedEventHandler jako samotny arg i mogłem użyć OriginalSource, by uzyskać kontrolę nad procesem. Używam również .Add zamiast .AddHandler. Jestem całkiem nowy w .NET, więc to wciąż jest dla mnie trochę niewyraźne. – PhilBrown

0

Oto moje dwa scenariusze w F #:

Scenariusz 1

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

pager.PageIndexChanged.AddHandler(pageIndexChanged) 

Które yeilds błąd

Ten exp Oczekiwano ression mieć typu EventHandler
ale tutaj ma typ
eventhandler -> jednostki

Scenariusz 2

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

pager.PageIndexChanged.Add(pageIndexChanged) 

Kompilator akceptuje to, ale nic nie mogę zrobić z args

Powiązane problemy