微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

wpf – 为什么CompositionTarget.Rendering采用EventArgs而不是RenderingEventArgs?

CompositionTarget.Rendering事件是一个简单的老EventHandler,有一个简单的老EventArgs.然而,在现实生活中,它显然总是获得 RenderingEventArgs一个实例.所以你的事件处理程序必须首先投射EventArgs,以获得有用的信息.

为什么不是EventHandler< RenderingEventArgs>的事件,所以我们可以更容易地得到这些参数(更重要的是,所以甚至可以知道这些参数)?为什么微软选择给这个事件错了签名?

我想知道向后兼容性 – 有没有RenderingEventArgs不存在的版本? – 但似乎并非如此.根据MSDN,RenderingEventArgs和CompositionTarget都是在两个平台的同一版本中引入的 – 在WPF中都加入了.NET 3.0;在Silverlight中,都加入了Silverlight 3.0.

如果它提供任何提示,我碰到一个旧的discussion thread,有人说:“代表使用EventArgs,因为有一些表现赢得编组通过这样做.如果有人可以解释什么样的表现胜利,我会愿意接受这个答案.

解决方法

编组胜利可能是一个低级别的内存管理事情.因为EventArgs是事件最常见的参数形式,因此在插件的低级别事件处理实现中可能会有预先分配的缓冲区.甚至可能只是在某些平台上获胜,只能在强化渲染中获胜.

在最新的SL版本中,渲染速度已经得到显着改善,我怀疑这是正在推动这样做的调整.

由于实施而导致界面受损,这是一个痛苦,但如果胜利是重大的话,这是一个公平的权衡.此外,在这种情况下,功能没有实质的损失,因为它很容易投射并获取底层数据.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐