CompositionTarget.Rendering事件是一个普通的旧EventHandler,具有普通的旧EventArgs。但是,在现实生活中,它显然总是获得RenderingEventArgs的实例。因此,您的事件处理程序必须先投射EventArgs以获取有用的信息。为什么CompositionTarget.Rendering需要使用EventArgs而不是RenderingEventArgs?
为什么不是EventHandler<RenderingEventArgs>
类型的事件,所以我们能够争取到的参数更容易(更重要的,所以我们甚至可以知道参数是有)? 为什么微软会选择给这个事件添加错误的签名?
我想知道向后兼容性 - 是否有RenderingEventArgs不存在的版本? - 但似乎并非如此。根据MSDN,RenderingEventArgs和CompositionTarget是在两个平台的相同版本中引入的 - 在WPF中,两者都是在.NET 3.0中添加的;在Silverlight中,两者都是在Silverlight 3.0中添加的。
如果它提供了任何提示,我碰到了一个老的discussion thread,有人说:“这个委托使用EventArgs,因为这样做有一定的性能。如果有人能够解释什么样的表现可能会胜出,我会愿意接受这个答案。
+1:鼠标事件也发生同样的事情。您经常需要手动将它们更改为更具体的MouseEventArgs以获取* cool *属性。 – 2010-09-02 13:18:03