我正在编写一个关于公共巴士传输服务的Windows Phone 8.1商店应用程序,它从存储在Windows Azure上的数据库中读取每个公共汽车站的坐标,并为程序绘制Pin的每个坐标。
代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string input =
"<Data>" +
"<Report>" +
"<Machine name=\"hostA\">" +
"<MachineInfo location=\"LA\">" +
"<function name=\"run\">Late</function>" +
"<function name=\"status\">Complete</function>" +
"<function name=\"date\">2015-06-14</function>" +
"</MachineInfo>" +
"<RepItem name=\"1488\" direction=\"NS\">" +
"<Desc>None Found</Desc>" +
"<Status Int=\"A12\">Uplink</Status>" +
"</RepItem>" +
"<RepItem name=\"1489\" direction=\"S\">" +
"<Desc>31Ghz Ant at 285ft.</Desc>" +
"<Status Int=\"D5\">Active</Status>" +
"</RepItem>" +
"<RepItem name=\"1438\" direction=\"W\">" +
"<Desc>West N. Oc. Backup</Desc>" +
"<Status Int=\"A11\">Disabled</Status>" +
"</RepItem>" +
"<RepItem name=\"1141\" direction=\"SE\">" +
"<Desc>MDT Co.</Desc>" +
"<Status Int=\"B7\">Active</Status>" +
"</RepItem>" +
"</Machine>" +
"<Machine name=\"hostB\">" +
"<MachineInfo location=\"E. LA\">" +
"<function name=\"run\">Late</function>" +
"<function name=\"status\">Complete</function>" +
"<function name=\"date\">2015-06-14</function>" +
"</MachineInfo>" +
"<RepItem name=\"1488\" direction=\"NS\">" +
"<Desc>None Found</Desc>" +
"<Status Int=\"A12\">Down</Status>" +
"</RepItem>" +
"<RepItem name=\"1489\" direction=\"S\">" +
"<Desc>31Ghz Ant at 285ft.</Desc>" +
"<Status Int=\"D5\">Active</Status>" +
"</RepItem>" +
"<RepItem name=\"1438\" direction=\"W\">" +
"<Desc>West N. Oc. Backup</Desc>" +
"<Status Int=\"A11\">Disabled</Status>" +
"</RepItem>" +
"<RepItem name=\"1141\" direction=\"SE\">" +
"<Desc>MDT Co.</Desc>" +
"<Status Int=\"B7\">Active</Status>" +
"</RepItem>" +
"</Machine>" +
"</Report>" +
"</Data>";
XDocument doc = XDocument.Parse(input);
var results = doc.Descendants("Machine")
.Select(x => new {
name = x.Attribute("name").Value,
info = new {
machineInfo = x.Element("MachineInfo").Attribute("location").Value,
functions = x.Element("MachineInfo").Elements("function").Select(y => y.Value).ToList()
},
repItems = x.Elements("RepItem")
.Select(y => new {
name = y.Attribute("name").Value,
direction = y.Attribute("direction").Value,
description = y.Element("Desc").Value,
status = y.Element("Status").Value,
index = y.Element("Status").Attribute("Int").Value
}).ToList()
})
.ToList();
}
}
}
主要问题是我不知道如何在这个引脚上添加一个事件,甚至在阅读其他讨论时我也无法理解我是怎么做到的......
我需要创建一个事件,当我点击Pin时,它会显示一条消息,例如“Pin Clicked”作为示例......
感谢您的帮助!
答案 0 :(得分:0)
最好的方法是在视图XAML中设置所有内容。
有一个名为MapItemsControl
的控件,它可以用于绑定到一组项目。如果需要,您还可以设置每个样式,以便它使用您给定的图像。
举个好例子,您可以在这里查看Shawn Kendrot的网站:http://visuallylocated.com/post/2014/08/13/Bind-a-collection-of-items-to-the-Windows-Phone-MapControl.aspx
要添加的其他内容是该集合上的tapped
事件来处理它。
希望这有帮助
答案 1 :(得分:0)
在您的XAML中向地图添加一个Tapped事件。似乎MapTapped在点击地图时触发,而在地图子点击时点击。