首页 > 解决方案 > 使用键盘导航 ListView 而不选择 (UWP)

问题描述

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

标签: listviewuwpfocusuwp-xamllistviewitem

解决方案


此操作特定于 Listview 的SelectionMode属性。根据这里的文件

单身的

  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;
  }
}

推荐阅读