GridView的自定义SelectionMode。仅在右键单击时选择

时间:2013-06-09 15:50:34

标签: c# xaml windows-8 microsoft-metro windows-store-apps

我正在尝试在Windows 8应用中为GridView实现一些复杂的选择行为。我知道Windows Store中的OneNote应用程序可以实现与我想要的完全相同的行为。这是我想要的行为:

  • 如果我左键单击该项目,则只应触发ItemTapped事件。不应选择项目。这与SelectionMode="None"完全相同。在触摸屏设备上轻触项目时,预计会出现相同的行为。
  • 如果我右键单击,我应该可以选择多个项目 - 就像SelectionMode="Multiple"一样。当用户通过滑动并拉动它来选择项目时,应该发生类似的事情。如果我再次左键单击某个项目,则应取消选中所有选定的项目,并触发ItemTapped。

简而言之,左键单击和项目点按应该表现为SelectionMode="None",而右键单击和滑动选择应该作为SelectionMode="Multiple"

1 个答案:

答案 0 :(得分:3)

我认为您可以通过首先启用多项选择以及启用滑动手势来实现您的目标。然后在左键单击(在点击的处理程序中),您可以取消选择代码中的所有项目。

Xaml GridView选项 - 这允许右键单击并触摸(滑动)选择:

SelectionMode="Multiple"
IsSwipeEnabled="True"
Tapped="itemGridView_Tapped"

以下是点击事件背后的代码 - 点击左键或点按,这会取消选择所有选定的项目:

private void itemGridView_Tapped(object sender, TappedRoutedEventArgs e)
{
    while (itemGridView.SelectedItems.Count > 0)
        itemGridView.SelectedItems.RemoveAt(0);
}