Silverlight入门教程(6)

逝伤 分享 2021-04-05 下载文档

资料,教程,编程,文集

void OnMouseEnter(object sender, MouseEventArgs e) {
Ellipse ell = sender as Ellipse; ell.Fill = new SolidColorBrush(Colors.Yellow); } void OnMouseLeave(object sender, MouseEventArgs e) { Ellipse ell = sender as Ellipse; ell.Fill = new SolidColorBrush(Colors.Green); }
运行后效果如下:
分别在两个圆形上放上鼠标并移开后如下所示:
使用代码管理事件
除了在 XAML 中声明事件外,也可以直接使用代码来注册事件,简单的修改一下上面的 XAML 文件,去掉 事件的声明并为两个圆形分别加上 Name:
<Canvas Background="#46461F"> <Ellipse x:Name="ellipse1" Width="120" Height="120" Fill="Orange" Canvas.Top="60" Canvas.Left="80"/>
<Ellipse x:Name="ellipse2" Width="120" Height="120" Fill="Orange" Canvas.Top="60" Canvas.Left="280"/> </Canvas>
在代码中进行事件注册:
public partial class Page : UserControl { public Page()
{ InitializeComponent(); ellipse1.MouseEnter += new MouseEventHandler(OnMouseEnter); ellipse1.MouseLeave += new MouseEventHandler(OnMouseLeave); ellipse2.MouseEnter += new MouseEventHandler(OnMouseEnter); ellipse2.MouseLeave += new MouseEventHandler(OnMouseLeave); }
void OnMouseEnter(object sender, MouseEventArgs e) { Ellipse ell = sender as Ellipse; ell.Fill = new SolidColorBrush(Colors.Yellow); } void OnMouseLeave(object sender, MouseEventArgs e) { Ellipse ell = sender as Ellipse; ell.Fill = new SolidColorBrush(Colors.Green); } }
运行后可以看到跟上面一样的效果:
事件数据
所有的鼠标事件都使用 MouseButtonEventArgs 和 MouseEventArgs 作为事件数据,通过这两个参数 可以获取相关事件数据,使用 GetPosition 方法或者 Source,Handled 属性.如下面的 XAML 声明:
<Canvas Background="#46461F"> <Rectangle Fill="Orange" Stroke="White" StrokeThickness="2" Canvas.Top="40" Canvas.Left="130" Width="240" Height="120" MouseMove="Rectangle_MouseMove"/> <TextBlock x:Name="Status" Foreground="White" Text="Status" Canvas.Left="100" Canvas.Top="200"/> </Canvas>
为矩形添加 MouseMove 事件处理,在鼠标移动时我们获取当前坐标位置,并显示出来:
private void Rectangle_MouseMove(object sender, MouseEventArgs e) {
Point p = e.GetPosition(e.Source as FrameworkElement); Status.Text = String.Format("坐标位置({0}:{1})",p.X,p.Y); }
运行后在矩形中移动鼠标,效果如下:
路由事件
在 Silverlight 中,提供了事件路由,使得我们可以在父节点上接收和处理来自于子节点的事件,Silverli ght 中的路由事件采用了冒泡路由策略.在鼠标事件中 MouseLeftButtonDown ,MouseLeftButtonU p ,MouseMove 三个事件都支持路由事件,而 MouseEnter,MouseLeave 两个事件不支持.下面的 X AML 中我们为 Canvas 对象声明了一个 MouseLeftButtonDown 事件:
<Canvas x
:Name="ParentCanvas" Background="#46461F" MouseLeftButtonDown="ParentCanvas_MouseLeftButtonDown"> <Rectangle


Silverlight入门教程(6).doc 将本文的Word文档下载到电脑

下一篇:镇江市2013届第一学期期中调研测试高三语文参考答案及评分标准

相关推荐
相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xxxxxx QQ:xxxxxx