如何基于边框元素删除winjs listview中的焦点

How to remove focus in winjs listview based on borders element

我的应用程序响应迅速。假设我的列表视图中有 140 个项目,最初我在全屏显示中每行显示 6 个项目,如果调整应用程序的大小,每行的项目数可能会根据显示区域的大小而减少。让我们假设,每行 3 个项目。

现在我想要的是,当用户焦点在顶行并且用户仍然按下 KEY_UP(38) 时,我想 删除聚焦并将其设置在其上方的菜单 上,如果用户位于一行中最左侧的元素并仍然按 KEY_LEFT(37),我想移除焦点并将其设置到左侧的菜单

现在,我可以在列表视图上添加 keydown 事件侦听器并检测 KEY_UP(38) 并移除焦点 仅当每行的项目数稳定时。但是,如果用户调整应用程序的大小,则该功能将不起作用。现在,如何解决这个问题。

我想我已经正确解释了我的问题。如果没有,请告诉我。

您可以尝试使用 XYFocus. Wire up XYFocus to listen for the arrow keys, as seen in this sample:

WinJS.UI.XYFocus.keyCodeMap.up.push(WinJS.Utilities.Key.upArrow);
WinJS.UI.XYFocus.keyCodeMap.down.push(WinJS.Utilities.Key.downArrow);
WinJS.UI.XYFocus.keyCodeMap.left.push(WinJS.Utilities.Key.leftArrow);
WinJS.UI.XYFocus.keyCodeMap.right.push(WinJS.Utilities.Key.rightArrow);

我不确定 ListView 项目是否可聚焦。如果没有,请在项目模板中添加一个 tabindex。

如果可行,请告诉我!