Я разрабатываю приложение для ПК и Xbox.Теперь сталкиваюсь с непростой проблемой.
У меня есть GridView, для которого включена одна строка.Таким образом, фокус может двигаться влево / вправо.Я вычислил ширину элемента, поэтому в визуальной области пользователя всегда отображаются 4 элемента.
На моем компьютере, когда фокус перемещается влево / вправо, он выглядит хорошо, как и ожидалось.Но на моем xbox, при перемещении элемента вправо, элементы всегда показывают часть.
Более четко, вот два видео.
ПК
Xbox
Обратите внимание на xbox, когда я перемещаю фокус на , следующий элемент показывает его часть.
Итак, как отключить следующий элемент, вы увидите его часть, просто действуйте как компьютер.Когда фокус на этом, элемент показывает.Когда фокус не на нем, не показывайте его.
В событии 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;