You can use PointerPressed/PointerReleased events on the GridViewItem to get the same effect you would otherwise get from RightTapped or ManipulationCompleted.
<ListView
Margin="120,80,0,0"
SelectionMode="Multiple">
<ListView.ItemContainerStyle>
<Style
TargetType="ListViewItem">
<Setter
Property="Width"
Value="100" />
<Setter
Property="Height"
Value="100" />
</Style>
</ListView.ItemContainerStyle>
<ListViewItem
RightTapped="ListViewItem_RightTapped_1"
PointerPressed="ListViewItem_PointerPressed_1"
PointerReleased="ListViewItem_PointerReleased_1"
ManipulationStarted="ListViewItem_ManipulationStarted_1">
<Rectangle
Height="80"
Width="80"
Fill="Red" />
</ListViewItem>
</ListView>
.
private void ListViewItem_RightTapped_1(object sender, RightTappedRoutedEventArgs e)
{
Debug.WriteLine("Tap");
}
private void ListViewItem_PointerPressed_1(object sender, PointerEventArgs e)
{
Debug.WriteLine("Press");
}
private void ListViewItem_ManipulationStarted_1(object sender, ManipulationStartedRoutedEventArgs e)
{
Debug.WriteLine("Manipulating");
}
private void ListViewItem_PointerReleased_1(object sender, PointerEventArgs e)
{
Debug.WriteLine("Release");
}
}
Output:
Press
Release
Press
Release
*EDIT
Sorry, I must have missed it somehow that these events work differently with touch and mouse. I think the answers you got might be the best you will get. Otherwise - you would need to implement your own version of a ListView. You could try pressuring them with hope to get a better solution in one of the future releases, but I would not hope for much there. From what I remember - ContextMenus are not very metro and there are better UX solutions than right-click menus. You can display the commands in the AppBar or on a details page that opens after you select an item. That could work better than trying to hack a workaround for something that was never designed to be supported.