2010-06-10 35 views
5

我在我的Silverlight应用程序中使用DataPager控件。对于不同的DataGrid,我有不同的寻呼机,并且想为所有这些事件的PageIndexChanged事件使用相同的事件处理程序。委托人必须将EventArgs对象作为参数。我可以使用这个对象来“返回”事件触发的控件吗?DataPager EventArgs

回答

0

sender参数是引发事件的对象的引用。

所以,如果你想获得的DataPager这应该这样做: -

DataPager dp = (DataPager)sender; 
+0

的PageIndexChanged事件只接受一个ARG的代表,它的类型必须为EventArg – PhilBrown 2010-06-10 21:14:53

+0

@philbrowndotcom的:嗯......你在哪里得到那个的?它有一个事件,它有签名'公共事件EventHandler PageIndexChanged'因此它接受'void(object,EventArgs)'的代表' – AnthonyWJones 2010-06-10 21:35:46

+0

我在这里肯定缺少一些东西。我在F#工作,我不知道这个差异有多大。我编码的所有其他处理程序都将RoutedEventHandler作为唯一参数,我可以使用OriginalSource来获得触发控制。我也一直在使用.Add而不是.AddHandler。我对.NET相当陌生,所以这个东西对我来说还是有些模糊。 – PhilBrown 2010-06-10 23:37:24

0

以下是F#我的两个场景:

方案1

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

pager.PageIndexChanged.AddHandler(pageIndexChanged) 

哪个yeilds的错误

This exp ression预计将有 类型的事件处理程序
但这里的类型为
事件处理程序 - >单元

方案2

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

pager.PageIndexChanged.Add(pageIndexChanged) 

编译器接受这一点,但我可以用ARGS无能为力