我已将地图添加到我的应用程序中。由于引脚只能获取位置、地址和标签。我真的不知道点击了哪个引脚。我可能可以使用地址或位置来爬行我的数据列表并找出哪个数据映射到该引脚。但是有没有办法添加一个ID,比如我的数据库ID,来快速获取与pin相关的数据记录?引脚上有一个继承的 Id 属性,但它是在幕后创建的 GUID。
引脚是使用数据模板创建的,因此它们会随着我的数据列表的增长而出现。我希望能够将用户带到有关他们单击的位置的更详细页面。
这是带有数据模板的地图 XAML:
<maps:Map x:Name="map" MapClicked="OnMapClicked" ItemsSource="{Binding Positions}">
<maps:Map.ItemTemplate>
<DataTemplate>
<maps:Pin Location="{Binding Location}"
Address="{Binding Address}"
Label="{Binding Description}"
InfoWindowClicked="OnInfoClicked"
MarkerClicked="OnMarkerClicked"/>
</DataTemplate>
</maps:Map.ItemTemplate> </maps:Map>
这是使用 BindingContext 检索原始记录的处理程序。
async void OnMarkerClicked(object sender, PinClickedEventArgs args)
{
Pin p = (Pin)sender;
Position pos = (Position)p.BindingContext;
Console.WriteLine($"OnMarkerClicked: {pos.ID}");
}