您可以在 GridViewItem 上使用 PointerPressed/PointerReleased 事件来获得与 RightTapped 或 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");
}
}
输出:
新闻稿 新闻稿
*编辑
抱歉,我一定是错过了这些事件与触摸和鼠标不同的工作方式。我认为你得到的答案可能是你能得到的最好的答案。否则 - 您将需要实现您自己的 ListView 版本。您可以尝试向他们施压,希望在未来的某个版本中获得更好的解决方案,但我对此不抱太大希望。据我所知 - ContextMenus 不是很实用,并且有比右键菜单更好的 UX 解决方案。您可以在 AppBar 中或在选择项目后打开的详细信息页面上显示命令。这可能比试图破解一个从未被设计为支持的东西的解决方法更好。