Перейдите в ListView с клавиатуры без выбора (UWP) - PullRequest
0 голосов
/ 13 декабря 2018

Я заметил, что при навигации по ListView с помощью клавиш со стрелками он помечает ListItem как выбранный (хотя и не вызывает щелчка).Однако, если я также удерживаю нажатой клавишу Ctrl + Shift, фокус перемещается без выбора элементов.Есть ли способ сделать это по умолчанию?Или даже лучше, чтобы состояние соответствовало состоянию PointerOver ?У меня разные цвета фона для выделенных и указателей на состояния, и я хочу, чтобы поведение мыши соответствовало поведению клавиатуры.

1 Ответ

0 голосов
/ 13 декабря 2018

Это действие относится только к свойству Listview SelectionMode.Согласно этому документу здесь

Single

  1. Без ключей-модификаторов: Пользователь можетвыберите один элемент с помощью пробела, щелчка мыши или касания.Пользователь может отменить выбор элемента, используя жест смахивания вниз.

  2. Удерживая нажатой клавишу Ctrl: Используя клавиши со стрелками, пользователь может перемещать фокус независимо от выделения.

Несколько

  1. Без клавиш-модификаторов: Пользователь может выбрать несколько элементов, используя пробел, щелчок мышиили коснитесь касания, чтобы переключиться на выделенный объект.Используя клавиши со стрелками, пользователь может перемещать фокус независимо от выбора .

Если вам нужно изменить это поведение по умолчанию, вы можете использовать PreviewKeyDown событие для просмотра списка.

// Пример кода

private void ListView_PreviewKeyDown(object sender, KeyRoutedEventArgs e)
{
  if(e.Key == VirtualKey.Down)
  {
    FocusManager.TryMoveFocus(FocusNavigationDirection.Down);
    e.Handled = true;
  }
  else if (e.Key == VirtualKey.Up)
  {
    FocusManager.TryMoveFocus(FocusNavigationDirection.Up);
    e.Handled = true;
  }
  else
  {
    e.Handled = false;
  }
}
...