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