Silverlight控件相关操作技巧讲解
创始人
2024-06-19 05:11:43
0

Silverlight工具中内置了很多种控件。开发人员使用这些Silverlight控件可以轻松的完成界面图形的操作,以及一些音频视频的相关操作。Silverlight的界面是通过控件套用控件来改变页面的布局与实现体验者的视觉效果的。本文介绍Silverlight即时显示JavaScript程序的状态,详细介绍JavaScript实现对Silverlight的控件访问、修改、删除、创建。#t#

提示:对控件进行操作,如果在控件的onLoad之前访问和操作都会出现异常!,是因为找不到对象。

下面的Silverlight控件实例是JavaScript循环创建动画的效果,显示内容可以随意改变。控件的格式是XAML中定义的TextBlock(文本控件),包括Animation创建,添加,和删除等功能。

变量说明:

  1. var txtFormat=new _textBlock(); 
    //字体格式对象  
  2. var writeText="Welcom to WPF.COM!";
    //运画显示内容  
  3. var CanvasLeft=0
    //随环改变  
  4. var CanvasTop=0
    //加载的XAML中的高度位置  
  5. var charIndex=0
    //显示的字符索引  
  6. var split_width=15
    //每一个字符的宽度,可以对此智能改变  
  7. var _silverlight_c; 
    //指定的Silverlight控件对象 

在Page.xaml.js文件中创建了_textBlock类,使用此类记录textBlock中的格式,大小信息。

  1. function _textBlock()  
  2. {  
  3. this.fontFamily="";  
  4. this.width=0;  
  5. this.height=0;  
  6. this.textWrapping="Wrap";  
  7. this.fontSize=0.0;  
  8. }  
  9. var txtFormat=new _textBlock(); 

Silverlight控件在onLoad事件中加载了XAML中的格式,并把样式控件删除,并且调用了显示动画的方法(goAnimation)。

  1. handleLoad: function(control, 
    userContext, rootElement)   
  2. {  
  3. this.control = control;  
  4. _silverlight_c=control;  
  5. var tStyle=control.content.
    findName("tStyle");  
  6. for(var i in txtFormat)  
  7. {  
  8. txtFormat[i]=tStyle[i];  
  9. }  
  10. CanvasLeft=tStyle["Canvas.Left"];  
  11. CanvasTop=tStyle["Canvas.Top"];  
  12. control.content.root.children.
    remove(tStyle);  
  13. tStyle=null;  
  14. goAnimation();  
  15. }  

下面是goAnimation的代码:

  1. function goAnimation(){  
  2. if(charIndex
  3. {  
  4. var this_char=writeText.substr(charIndex,1);  
  5. if(this_char!=" ")  
  6. {  
  7. var t_control=_silverlight_c.content.
    createFromXaml('schemas.microsoft.com/winfx/2006/xaml" 
    Text="Hello" x:Name="t'+charIndex+'">
  8. ');  
  9. CanvasLeft+=split_width;  
  10. for(var i in txtFormat){t_control[i]=txtFormat[i];}  
  11. t_control["Canvas.Top"]=-20;  
  12. t_control["Canvas.Left"]=CanvasLeft;  
  13. t_control.foreground="#ffffffff";  
  14. t_control.Text=this_char;  
  15. _silverlight_c.content.root.children.add(t_control);  
  16. var storyboard_str='schemas.microsoft.com/winfx/2006/xaml" 
    x:Name="animation'+charIndex+'">';  
  17. storyboard_str+='BeginTime="00:00:00" Storyboard.TargetName=
    "t'+charIndex+'" Storyboard.TargetProperty=
    "(UIElement.RenderTransform).(TransformGroup.
    Children)[2].(RotateTransform.Angle)">';  
  18. storyboard_str+='KeySpline="0.091,0.532,1,1" KeyTime="00:00:00.
    6000000" Value="-360"/>';  
  19. storyboard_str+="";  
  20. storyboard_str+='BeginTime="00:00:00" Storyboard.TargetName=
    "t'+charIndex+'" Storyboard.TargetProperty="
    (UIElement.RenderTransform).(TransformGroup.
    Children)[3].(TranslateTransform.Y)">';  
  21. storyboard_str+='KeySpline="0.091,0.532,1,1" KeyTime="00:00:00.
    6000000" Value="'+CanvasTop+'"/>';  
  22. storyboard_str+='';  
  23. storyboard_str+='BeginTime="00:00:00" Storyboard.TargetName=
    "t'+charIndex+'" Storyboard.TargetProperty="
    (UIElement.Opacity)">';  
  24. storyboard_str+='KeyTime="00:00:00" Value="0.055"/>';  
  25. storyboard_str+='KeyTime="00:00:00.6000000" Value="1"/>';  
  26. storyboard_str+='';  
  27. storyboard_str+="";   
  28. var storyboard_control=_silverlight_c.
    content.createFromXaml(storyboard_str);  
  29. t_control.Resources.add(storyboard_control);  
  30. storyboard_control.begin();  
  31. }  
  32. CanvasLeft+=split_width;  
  33. charIndex++;  
  34. setTimeout("goAnimation()",100);  
  35. }  

 

使用content.createFromXaml方法创建Silverlight中的对象。

使用content.findName 利用x:Name查找名称对象

使用silverlight_control.children.add添加控件。

使用silverlight_control.Resources.add添加StoryBoard动画对象(Storyboard)。
storyboard_obj.Begin播放。

Silverlight控件的具体操作方法就为大家介绍到这里。

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...