Windows runtime WinRT:右键单击可用于选择项目。滑动手势不';T

Windows runtime WinRT:右键单击可用于选择项目。滑动手势不';T,windows-runtime,winrt-xaml,selection,swipe,right-click,Windows Runtime,Winrt Xaml,Selection,Swipe,Right Click,我觉得我错过了一些明显的东西。我有一个应用程序,它使用GridViewItem的“IsSelected”属性来指示某个项目已被选中。当我在台式计算机(无触摸设备)上使用应用程序时,右键单击该项目,它将变为选中状态。把同一个程序放在一个平面上,我找不到可以选择它的手势。向下轻扫,按住;似乎没有什么能完成右键单击在桌面上所做的工作 有人知道可能缺少什么吗?我明白你的意思。这似乎违反直觉,是吗?在这种情况下,我的首选项是启用项目单击并使用项目单击来设置所选项目。如果您觉得这对用户来说是最直观的。从这个

我觉得我错过了一些明显的东西。我有一个应用程序,它使用GridViewItem的“IsSelected”属性来指示某个项目已被选中。当我在台式计算机(无触摸设备)上使用应用程序时,右键单击该项目,它将变为选中状态。把同一个程序放在一个平面上,我找不到可以选择它的手势。向下轻扫,按住;似乎没有什么能完成右键单击在桌面上所做的工作


有人知道可能缺少什么吗?

我明白你的意思。这似乎违反直觉,是吗?在这种情况下,我的首选项是启用项目单击并使用项目单击来设置所选项目。如果您觉得这对用户来说是最直观的。从这个XAML开始:

<GridView IsItemClickEnabled="True" ItemClick="GridView_ItemClick" />
它应该适用于SelectionModeSingle和Multiple

这有意义吗


//杰瑞

好的,我得到了答案,但它并不漂亮。在我的代码中,我试图用自己的名为ContentView的控件对GridView进行子类化。在XAML中,没有标准控件的子类(不能使用“BasedOn”来选择内置控件的样式),因此我的ContentView没有选择标准GridView的样式。然而,在分析了标准样式之后,我发现两个关键特性是:

IsSweepEnabled-必须设置为true,才能滑动项目

ScrollViewer.VerticalScrollMode-必须禁用,以便滚动查看器不会试图将滑动动作解释为向下滚动的命令


之后,滑动鼠标右键单击操作非常简单。

我同意您可以使用事件强制执行操作(您实际上希望捕获“RightTapped”事件,而不是ItemClick)。然而,这仍然没有意义:如果你用鼠标做了一个工作手势,那么一定有一些触摸设备的模拟。有,点击并拖动项目向下四分之一英寸。右键单击=滑动。因此,您需要设置属性IsSwipeEnable=true。要澄清这一点,您可以100%地对
GridView
进行子类化。我不得不提到这一点,这样你的评论就不会误导其他可能找到你答案的开发人员。
private void GridView_ItemClick(object sender, ItemClickEventArgs e)
{
    var grid = sender as GridView;
    if (grid.SelectedItems.Contains(e.ClickedItem))
        grid.SelectedItems.Remove(e.ClickedItem);
    else
        grid.SelectedItems.Add(e.ClickedItem);
}