WP 8.1 RT 上的 MapItemsControl 点击事件
Posted
技术标签:
【中文标题】WP 8.1 RT 上的 MapItemsControl 点击事件【英文标题】:MapItemsControl Tapped Event on WP 8.1 RT 【发布时间】:2015-12-16 09:21:38 【问题描述】:我正在开发 Windows Phone 8.1 RT 项目,我想在点击 mapcontrolSP 时获取我的绑定项。
<Maps:MapControl x:Name="Map" MapServiceToken="abcdef-abcdefghijklmno">
<Maps:MapItemsControl x:Name="mapitem" ItemsSource="Binding">
<Maps:MapItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel x:Name="mapcontrolSP" Orientation="Horizontal" Background="Red" Tapped="ItemStckPanel">
<Image Source="Assets/ico-venue.png" Height="45" Width="45"
Maps:MapControl.Location="Binding Geopoint"
Maps:MapControl.NormalizedAnchorPoint="Binding Anchor"/>
<StackPanel VerticalAlignment="Center" HorizontalAlignment="Center" Margin="5">
<TextBlock FontSize="15" Foreground="White" Text="Binding name"/>
<TextBlock FontSize="15" Foreground="White" Text="Binding address"/>
<TextBlock FontSize="15" Foreground="White" Text="Binding distance"/>
</StackPanel>
</StackPanel>
</DataTemplate>
</Maps:MapItemsControl.ItemTemplate>
</Maps:MapItemsControl>
</Maps:MapControl>
我在 StackPanel 元素上创建了一个点击事件,但项目为空:
private void ItemStckPanel(object sender, TappedRoutedEventArgs e)
var item = sender as FsqBasicItem;
MessageDialog dialog = new MessageDialog(item.name);
dialog.ShowAsync();
我如何获得物品?
【问题讨论】:
【参考方案1】:快速解决方案:
private void ItemStckPanel(object sender, TappedRoutedEventArgs e)
var stackPanel = sender as StackPanel;
var item = stackPanel.DataContext as FsqBasicItem;
if(item != null)
MessageDialog dialog = new MessageDialog(item.name);
dialog.ShowAsync();
【讨论】:
再次出现异常。现在堆栈面板为空。我使用这一行来绑定 mapitem.ItemsSource = basicItemsList; 嗯。你能告诉我它在代码中的样子吗?因为在我的测试解决方案中,这段代码:pastebin.com/cYMVivQc 运行良好。 嗯,我在模拟器上检查了这个(不幸的是目前没有设备),它对我有用。这是我的解决方案:1drv.ms/1Kowjxf也许你找到了一些东西:) 您的解决方案非常完美。我的 FsqbasicClass 不能正常工作。你的课对我很好。谢谢:) 请随时查看。我还没有找到解决方案***.com/questions/32652666/…以上是关于WP 8.1 RT 上的 MapItemsControl 点击事件的主要内容,如果未能解决你的问题,请参考以下文章
WP8.1 RT 和 Windows 8.1 RT 应用程序的 PCL Web Lib 问题
Windows Phone 8.1 RT 中的 ViewportControl 是啥?
使用 Windows RT 的客户端证书(windows 8.1/windows phone 8.1)