Silverlight 2.0 命中测试(HitTest)
2008-10-11 11:41:44 来源:WEB开发网本文示例源代码或素材下载
对于某个对象的点击事件,我们可以通过Click、MouseLeftButtonUp、MouseLeftButtonDown来捕获,但是如果有几十个、甚至几百个这样的对象需要判断是否被点击,可能你就会觉得很不爽,因为你要添加同样数量的Button_Click或者MouseDown、MouseUp事件处理程序,更不用说有控件重叠的情况了(两个控件甚至有可能重合)。
Silverlight 2.0在这方面做了改进,引入了WPF的HitTest方法。使用起来还是比较简单的。例如,我们有一个Canvas叫做LayoutRoot(Canvas根元素),那么我们就可以使用下面的代码:
IEnumerable<UIElement> elements=LayoutRoot.HitTest(mousePt);
foreach(UIElement element in elements)
{
FrameworkElement fe=element as FrameworkElement;
...
}
这里的mousePt为鼠标的当前坐标,我想明眼人已经看出来了,这段代码是写在MouseDown或者MouseUp事件处理程序中的,你可以把它直接写在Root Canvas的MouseDown或MouseUp事件中,这样可以保证能够捕获并判断所有的鼠标点击事件,当然如果有其他需求,可以单独写在某个特定的容器元素的MouseDown或MouseUp中。
为了方便大家更好的理解HitTest,我写了一个小的sample,只要你的鼠标点击位置处存在Rectangle,下面的TextBlock就会把相应的Rectangle的Name显示出来。该代码在VS2008和Expression Blend 2.5 march preview下编译通过。
Tags:Silverlight 命中
编辑录入:爽爽 [复制链接] [打 印]- ››silverlight全屏显示图片
- ››Silverlight MVVM 模式(一) 切近实战
- ››Silverlight for Windows Phone 7开发系列(1):...
- ››Silverlight for Windows Phone 7开发系列(2):...
- ››Silverlight for Windows Phone 7开发系列(3):...
- ››Silverlight for Windows Phone 7开发系列(4):...
- ››Silverlight for Symbian
- ››Silverlight3系列(四)数据绑定 Data Binding 1
- ››silverlight2 游戏 1 你能坚持多少秒
- ››Silverlight开发实践--PicZoomShow
- ››Silverlight自定义控件开发 - 令人懊恼的OnApplyT...
- ››Silverlight 2 RTW中ToolTipService.ToolTip不继承...
更多精彩
赞助商链接