将焦点一一移到GridView项上

时间:2019-05-27 07:31:56

标签: uwp uwp-xaml xbox xbox-one

我正在为PC和Xbox设计应用程序。现在面临一个棘手的问题。

我有一个GridView,它启用了一行。因此焦点可以左右移动。我已计算出商品的宽度,因此在用户可视区域中,始终有4个商品可见。

在我的电脑上,当焦点向左/向右移动时,看起来像预期的那样好。 但是在我的xbox上,将项目向右移动时,项目始终显示一部分。

更清楚的是,这是两个视频。

Pc

Xbox

当我将焦点移至xbox时,请注意 enter image description here,下一项显示其中的一部分。

enter image description here

因此,如何禁用下一项显示了其中一部分,就像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;

1 个答案:

答案 0 :(得分:0)

我检查了您的视频记录,如果要使Xbox GridView与PC相同,则需要手动关闭过扫描边框。

Xbox设置>显示和声音>视频输出,在“ 高级”下,选择“ 视频保真度和过扫描”,您将看到一个选项,内容为“ 应用可以添加边框”,则将其关闭。

不幸的是,我们尚未提供如果以编程方式关闭api可能会关闭的功能。请随时将其发布在UserVoice上。您也可以为我们共享代码示例,我们将检查是否还有其他解决方法。