listview - 使用键盘导航 ListView 而不选择 (UWP)
问题描述
我注意到,当使用箭头键导航ListView时,它会将ListItem标记为选中(尽管不会触发任何点击)。但是,如果我还按住 Ctrl+Shift,则焦点会移动而不选择项目。有没有办法让它成为默认值?或者更好的是,使状态与PointerOver 相匹配?我有不同的背景颜色用于选定状态和指针状态,并希望鼠标行为与键盘匹配。
解决方案
此操作特定于 Listview 的SelectionMode
属性。根据这里的文件
单身的
没有修饰键:用户可以使用空格键、鼠标单击或轻击来选择单个项目。用户可以使用向下滑动手势取消选择项目。
按下 Ctrl 时:使用箭头键,用户可以独立于选择移动焦点。
多
- 没有修饰键:用户可以使用空格键、鼠标单击或轻触来选择多个项目以切换对焦点项目的选择。使用箭头键,用户可以独立于选择移动焦点。
如果您需要更改此默认行为,您可以使用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;
}
}
推荐阅读
- html - CSS 将 svg 粘贴在 div 的右侧边框上
- python - 使用子进程显示命令窗口并在命令运行后从窗口中获取文本
- c# - 带有 chat.postMessage 的图像附件 - Slack API
- python - 为什么在使用应用创建新列时会出现“试图在切片的副本上设置值”?
- python - 在 Scala 项目中使用 python 库
- angular - 角 httpClient
- docker - 如何使用 gitlab CI/CD 变量在 docker-compose.yml 中进行更改
- javascript - 重构具有相同对象属性值的数组
- mediawiki - 如何在 Mediawiki 的信息框中调整图像大小?
- css - 角材料在条件下移除垫子无线电容器