Переместить фокус на элемент GridView один за другим - PullRequest
1 голос
/ 27 мая 2019

Я разрабатываю приложение для ПК и Xbox.Теперь сталкиваюсь с непростой проблемой.

У меня есть GridView, для которого включена одна строка.Таким образом, фокус может двигаться влево / вправо.Я вычислил ширину элемента, поэтому в визуальной области пользователя всегда отображаются 4 элемента.

На моем компьютере, когда фокус перемещается влево / вправо, он выглядит хорошо, как и ожидалось.Но на моем xbox, при перемещении элемента вправо, элементы всегда показывают часть.

Более четко, вот два видео.

ПК

Xbox

Обратите внимание на xbox, когда я перемещаю фокус на enter image description here, следующий элемент показывает его часть.

enter image description here

Итак, как отключить следующий элемент, вы увидите его часть, просто действуйте как компьютер.Когда фокус на этом, элемент показывает.Когда фокус не на нем, не показывайте его.

В событии 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 голосов
/ 29 мая 2019

Я проверил вашу запись видео. Если вы хотите, чтобы Xbox GridView отображал то же, что и ПК, вам нужно отключить границу пересканирования вручную.

Настройки Xbox> Дисплей и звук> Видеовыход, в разделе " Дополнительно " выберите " Верность видео и пересканирование " Вы увидите параметр, который говорит: " Приложения могут добавить границу", выключите, если выключите.

К сожалению, мы не предоставили API, которые могли бы отключиться программным путем. Пожалуйста, не стесняйтесь разместить его на UserVoice . И вы также можете поделиться примером кода для нас, мы проверим, есть ли другие обходные пути для этого.

...