我注意到,使用箭头键导航 ListView 时,它将 ListItem 标记为选中状态(尽管不会触发任何点击)。但是,如果我也按住Ctrl + Shift,则焦点会移动而不选择项目。有没有办法使它成为默认值?甚至更好的是使状态与 PointerOver 之一匹配?我为选择状态和指针状态设置了不同的背景色,希望鼠标的行为与键盘的行为相匹配。
答案 0 :(得分:0)
此操作特定于Listview的SelectionMode
属性。根据本文档here
单
没有修饰键:用户可以使用空格键,单击鼠标或轻触来选择单个项目。用户可以取消选择一个项目 使用向下滑动手势。
在按住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;
}
}
答案 1 :(得分:0)
虽然Vignesh的解决方案适用于常见情况,但不适用于某些其他情况。例如在长列表上使用键盘按PageDown时,仍会选中该项目,而不仅仅是更改焦点。
如果您的应用程序的目标是Windows 10版本1607(周年更新)或更高版本,则对我而言唯一有效的解决方案是使用ListView上的SingleSelectionFollowsFocus属性。将SelectionMode设置为“ Single”将其设置为False。