在Windows Phone 8.1中的地图引脚上添加Tap事件

时间:2015-06-21 16:41:40

标签: c# windows-phone-8.1

我正在编写一个关于公共巴士传输服务的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”作为示例......

感谢您的帮助!

2 个答案:

答案 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在点击地图时触发,而在地图子点击时点击。