【发布时间】:2019-10-12 18:22:53
【问题描述】:
我正在为 PC 和 Xbox 设计应用程序。现在面临一个棘手的问题。
我有一个 GridView,它启用了一行。所以焦点可以向左/向右移动。我已经计算了 item 的宽度,所以在用户可视区域中,总是有 4 个 item 可见。
在我的电脑上,当焦点向左/向右移动时,它看起来和预期的一样好。 但是在我的 xbox 上,当向右移动项目时,项目总是显示一个部分。
更清楚的是,这里有两个视频。
关于 xbox 的注意事项,当我将焦点移至 ,下一项展示了它的一部分。
所以,如何禁用下一项显示它的一部分,就像 pc 一样。当焦点在它上面时,项目就会显示出来。当焦点不在它上面时,不要显示它。
在PreviewKeyDown事件中,我使用了
case VirtualKey.Right:
case VirtualKey.GamepadDPadRight:
case VirtualKey.GamepadLeftThumbstickRight:
if (itemIndexInCurrentRiver + 1 <= currentRiver.Items.Count - 1)
{
currentRiver.Focus(FocusState.Programmatic);
GridViewItem item = new GridViewItem();
item = currentRiver.ContainerFromIndex(listIndexsInEachRiver[riverIndexInAllRivers]) as GridViewItem;
listIndexsInEachRiver[riverIndexInAllRivers] = itemIndexInCurrentRiver + 1;
item.Focus(FocusState.Programmatic);
item.IsSelected = true;
item.StartBringIntoView();
e.Handled = false;
}
else
e.Handled = true;
break;
【问题讨论】:
-
嗨@Vincent,你如何在PC平台上关注
GridView项目next by next? -
嗨,尼科。我使用 case VirtualKey.Right(键盘左/右)来移动焦点。
-
您可以尝试在pc平台内连接xbox游戏手柄并用游戏手柄右键移动下一个,您还可以看到下一个带有动画的部分。我认为这是设计使然。
-
不,我将 Xbox 控制器连接到我的电脑,然后左右移动焦点,一切正常,就像我使用键盘一样。因此,无论我使用什么输入设备,在 pc 平台上运行时似乎都是正确的。看我的视频:drive.google.com/file/d/1vaNfdd-4hWjSOfjiCZ3kmB9rzxLHyC1Z/…
-
所以这个问题只出现在xbox平台。您是否在 xbox 中调试并检查是否按下了正确的
VirtualKey?
标签: uwp uwp-xaml xbox xbox-one