4. 添加对HTML DOM对象的动态访问
我们在Page类中添加两个dynamic类型的对象doc和win,分别表示当前页面和窗口,修改后Page类如下:
public partial class Page : UserControl
{
// 添加的代码
dynamic doc = HtmlPage.Document.AsDynamic();
dynamic win = HtmlPage.Window.AsDynamic();
//…
}
{
// 添加的代码
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();
}
{
doc.Title = "Pictures of " + txtTag.Text;
lstPictures.ItemsSource = Source.LoadItems();
}
5. 添加Virtual Earth Jscript控件
打开解决方案中的测试页StartPage.htm,在<title>标签的前面添加如下Jave Script代码,引用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);
}
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);
}