我正在为一个与数据源绑定的地图添加一些推送。
<my:Map Height="340" HorizontalAlignment="Left" Margin="12,100,0,0" Name="settingsmap" VerticalAlignment="Top" Width="438" CredentialsProvider="_">
<my:MapItemsControl Name="settingsMapItemControl" MouseLeftButtonDown="settingsMapItemControl_MouseLeftButtonDown">
<my:MapItemsControl.ItemTemplate>
<DataTemplate>
<my:Pushpin Location="{Binding location}">
</my:Pushpin>
</DataTemplate>
</my:MapItemsControl.ItemTemplate>
</my:MapItemsControl>
</my:Map>
推针绑定到dataitem的“location”成员。
现在当有人点击图钉(或触摸手机)时,如何获取绑定到图钉的项目(从绑定到地图的对象列表)? 我想基本上得到这个项目,以便我可以在屏幕底部显示名称等其他信息。或者说你选择了“xyz”
答案 0 :(得分:1)
如果您正在使用MVVM,请在Pushpin上放置EventTrigger和InvokeCommandAction,并将DataContext本身绑定到Command参数。
<my:Pushpin Location="{Binding location}">
<i:Interactivity.Triggers>
<i:EventTrigger EventName="Tap">
<i:InvokeCommandAction Command="{Binding PushpinClick}"
CommandParameter="{Binding}" />
</i:EventTrigger>
<i:Interactivity.Triggers>
</my:Pushpin>
只需在您的VM中有一个名为PusphinClick的ICommand,您就可以获得参数Execute
如果您不使用MVVM,那么它会变得有点棘手 - 尝试将MouseLeftButtonDown事件处理程序附加到图钉上。在事件处理程序中,您可以通过将(sender as Pushpin).DataContext
作为YourDataItem ...