0

我正在尝试在 Windows Phone 上创建一个图钉,显示多个位置,包括名称、评级等。我在 MSDN、Stack Overflow 和其他网站上搜索了解决方案,但只找到了部分答案。

这是我目前的尝试。它根本不起作用。它确实创建了一个图钉,但没有更改为显示网格或任何其他元素。相反,它在地图的左上角显示一个空白图钉。

<mi:Map x:Name="map" Margin="-12,0" d:LayoutOverrides="Width" CredentialsProvider="Something else goes here :)">
   <mi:MapItemsControl ItemsSource="{Binding Pushpins}">
      <mi:MapItemsControl.ItemTemplate>
         <DataTemplate>
            <mi:Pushpin Location="{Binding Location}">
               <Grid Background="{Binding Background}">
                  <TextBlock Text="{Binding Name}" Margin="6,0"/>
                  <ProgressBar Maximum="5" Value="{Binding Rating}"/>
               </Grid>
             </mi:Pushpin>
          </DataTemplate>
       </mi:MapItemsControl.ItemTemplate>
    </mi:MapItemsControl>
 </mi:Map>

我怎样才能让上面的代码或类似的东西工作?

我以前的解决方案涉及使用代码创建元素,问题在于它变得凌乱,超出了几个引脚并且不能轻易用于获取其他信息(例如商店 URL)。

编辑:关于一切背后的代码的一些额外信息。

public struct PushpinModel
{
    public GeoCoordinate Location { get; set; }
    public string Name { get; set; }
    public string Url { get; set; }
    public float Rating { get; set; }
    public Brush Background { get; set; }
}

这些图钉模型通过 AddPin 方法添加到图钉的可观察集合中:

public void AddPin(GeoCoordinate coord, string Title, string url, float rating, Brush background)
{
    Pushpins.Add(new PushpinModel { Location = coord, Name = Title, Rating = rating, Url = url, Background = background} );
}

我的 GeoCoordinateWatcher 在其位置更改时调用 watcher_PositionChanged 事件。这会在用户位置添加一个图钉。

目前正在调用 ZoomToUser() 函数,但图钉未出现。

4

1 回答 1

3

这看起来不对

 <mi:MapItemsControl ItemsSource="Pushpins">

如果它是数据上下文的属性,它应该是

 <mi:MapItemsControl ItemsSource="{Binding Pushpins}">
于 2012-07-03T10:51:29.857 回答