没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|其它|编辑:郝浩|2009-05-27 09:30:20.000|阅读 484 次
概述:随着WEB开发的大行其道,各种动态语言也借着这股东风,蓬勃发展起来。在软件开发界,动态语言正在被越来越多的的人所接受和使用,动态语言在开发人群中的受关注程度竟然达到12%。而在 TIOBE的排名中,动态语言竟然占有了前十名中的六个席位。C#自然不会错过这种技术发展确实,本文将介绍C# 4.0中的动态类型与编程技巧。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
我们用管理员身份启动Visual Studio CTP,然后打开SilverlightSolution项目,如果一切正常,我们可以得到一个空的Silverlight程序页面:
4. 添加对HTML DOM对象的动态访问
我们在Page类中添加两个dynamic类型的对象doc和win,分别表示当前页面和窗口,修改后Page类如下:
public partial class Page : UserControl
{
// 添加的代码
dynamic doc = HtmlPage.Document.AsDynamic();
dynamic win = HtmlPage.Window.AsDynamic();
//…
}
然后,我们修改Page类的函数btnSearch_Click(),当用户点击”Get All”按钮后,更加用户搜索的内容,修改窗口的标题。
void btnSearch_Click(object sender, RoutedEventArgs e)
{
doc.Title = "Pictures of " + txtTag.Text;
lstPictures.ItemsSource = Source.LoadItems();
}
5. 添加Virtual Earth Jscript控件
打开解决方案中的测试页StartPage.htm,在﹤title﹥标签的前面添加如下JaveScript代码,引用Virtual Earth控件:
﹤script type="text/javascript"
src="http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.1"/﹥
然后,在﹤body﹥标签中添加如下代码,定义地图控件的位置和大小:
﹤div id='myMap' style="position:absolute; top:40px;
left:200px; width:550px; height:400px;"/﹥
通过简单的两步,我们就完成了对测试页面的修改。接下来的工作就是通过C#访问和控制Virtual Earth控件了。
6. 用C#代码控制Virtual Earth控件
在Page类中添加如下代码控制Virtual Earth控件,以实现获取地图,添加Pin的功能:
dynamic map = null;
void GetMap()
{
map = win.New.VEMap("myMap");
map.LoadMap();
}
void AddPin(Item item)
{
dynamic loc = win.New.VELatLong(item.Latitude, item.Longitude);
var pin = map.AddPushpin(loc);
pin.SetTitle(item.Title);
pin.SetDescription(item.Description);
map.SetCenterAndZoom(loc, 7);
}
忆苦才能思甜。为了体会动态编程给我们带来的便利,我们来看看在没有动态类型的C# 3.0中,AddPin()函数应该如何实现。如果是在C# 3.0中,我们的doc,win和map 都将是静态类型,为了执行这些对象的某些方法,需要进行显式的类型转换,同时,还需要将方法名作为字符串传递以实现方法的调用。很明显,C# 3.0中的实现过程非常繁琐,而C# 4.0中的实现是如此的优雅而自然。
void AddPin(Item item)
{
ScriptObject loc = win.CreateInstance("VELatLong", item.Latitude, item.Longitude);
ScriptObject pin = (ScriptObject)map.Invoke("AddPushpin", loc);
pin.Invoke("SetTitle", item.Title);
pin.Invoke("SetDescription", item.Description);
map.Invoke("SetCenterAndZoom", loc, 7);
}
最后,我们需要在适当的位置调用这两个函数,以实现地图的加载和Pin的添加。在Page类的Init()函数中添加GetMap()函数调用:
public void Init()
{
GetMap();
}
另外,在lstPictures_SelectionChanged()函数中添加AddPin()函数,当用户选择的图片变化后,重新获取Pin的位置并添加到地图上:
void lstPictures_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
Item selected = lstPictures.SelectedItem as Item;
AddPin(selected);
}
7. 编译解决方案
到这里为止,我们对项目的修改就全部完成了。重新编译整个解决方案,我们可以看到添加Virtual Earth控件后的页面。当我们在左侧列表中选择图片后,Pin会定位到这幅图片拍摄的地点,当我们把鼠标移动到Pin上时,则会显示图片和更多的相关信息
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
文章转载自:自互联网接DevExpress原厂商通知,将于近日上调旗下产品授权价格,现在下单客户可享受优惠报价!
面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号