我正在尝试在 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() 函数,但图钉未出现。