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)

LocalSettings 和后台任务 WP 8.1

如何在 Windows Phone 应用程序 8.1 rt 中安排本地通知?

LocalSettings和后台任务WP 8.1