Get RightTapped GridViewItem

岁酱吖の 提交于 2019-12-13 02:27:26

问题


I have a GridView where I'm storing the songs the user adds to a collection:

<GridView x:Name="MusicGridView" Margin="10" IsItemClickEnabled="True" ItemClick="Play_Song" Grid.Row="0" ItemsSource="{Binding Songs, ElementName=thisPage, Mode=OneWay}" SelectionMode="None">
    <GridView.ItemTemplate>
        <DataTemplate>
            <Grid Height="100" Width="100" RightTapped="Song_RightTapped">
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="*"/>
                </Grid.RowDefinitions>
                <Rectangle Grid.Row="0" Grid.RowSpan="2" Fill="#FF1F4E79"/>
                <Image Source="{Binding Path=AlbumArt.Source}" Grid.Row="0" Height="40" Width="40" Margin="10,10,10,0"/>
                <TextBlock Text="{Binding Title}" Foreground="White" VerticalAlignment="Bottom" HorizontalAlignment="Center" Grid.Row="1" Margin="5" TextWrapping="Wrap"/>
            </Grid>
        </DataTemplate>
    </GridView.ItemTemplate>
</GridView>

When the Grid is right-tapped (I can't seem to set a RightTapped property for the actual item) I show a PopupMenu. However, the sender is the Grid itself, of course, and I can't find a way to get the actual GridViewItem without doing what seem like really weird workarounds. Getting the selected item of the GridView isn't an option, since selection isn't enabled on it. Is there an easy way to get the item as a GridViewItem?


回答1:


If I understand your question correctly you want to get the binded object instead of the GridView. If that's the case you could try this.

private void Song_RightTapped(object sender, RightTappedRoutedEventArgs e)
{
    Song song = (sender as Grid).DataContext as Song;
    // Show PopupMenu
    // ...
}


来源:https://stackoverflow.com/questions/32927743/get-righttapped-gridviewitem

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!