使用键盘浏览ListView而不选择(UWP)

时间:2018-12-13 07:48:25

标签: listview uwp focus uwp-xaml listviewitem

我注意到,使用箭头键导航 ListView 时,它将 ListItem 标记为选中状态(尽管不会触发任何点击)。但是,如果我也按住Ctrl + Shift,则焦点会移动而不选择项目。有没有办法使它成为默认值?甚至更好的是使状态与 PointerOver 之一匹配?我为选择状态和指针状态设置了不同的背景色,希望鼠标的行为与键盘的行为相匹配。

2 个答案:

答案 0 :(得分:0)

此操作特定于Listview的SelectionMode属性。根据本文档here

  1. 没有修饰键:用户可以使用空格键,单击鼠标或轻触来选择单个项目。用户可以取消选择一个项目 使用向下滑动手势。

  2. 在按住Ctrl键的同时:使用箭头键,用户可以独立于选择移动焦点。

多个

  1. 不带修饰键:用户可以使用空格键,鼠标单击或触摸点击来选择多个项目。 重点项目。使用箭头键,用户可以移动焦点 与选择无关

如果您需要更改此默认行为,则可以将PreviewKeyDown事件用于列表视图。

//代码示例

private void ListView_PreviewKeyDown(object sender, KeyRoutedEventArgs e)
{
  if(e.Key == VirtualKey.Down)
  {
    FocusManager.TryMoveFocus(FocusNavigationDirection.Down);
    e.Handled = true;
  }
  else if (e.Key == VirtualKey.Up)
  {
    FocusManager.TryMoveFocus(FocusNavigationDirection.Up);
    e.Handled = true;
  }
  else
  {
    e.Handled = false;
  }
}

答案 1 :(得分:0)

虽然Vignesh的解决方案适用于常见情况,但不适用于某些其他情况。例如在长列表上使用键盘按PageDown时,仍会选中该项目,而不仅仅是更改焦点。

如果您的应用程序的目标是Windows 10版本1607(周年更新)或更高版本,则对我而言唯一有效的解决方案是使用ListView上的SingleSelectionFollowsFocus属性。将SelectionMode设置为“ Single”将其设置为False。