Подтвердить что ты не робот

WPF Listbox с сенсорной инерцией вытягивает все окно

У меня есть полноэкранное приложение WPF, созданное для сенсорного монитора, и на главном экране у меня есть Listbox.

Когда я нажимаю "Listbox", он прокручивается хорошо, но когда он добирается до конца списка, приложение целиком сбрасывается с верхней части экрана, могу ли я остановить это поведение каким-то образом?

Кто-нибудь еще видел это?

4b9b3361

Ответ 1

Да, поведение по умолчанию ListBox (вернее, ScrollViewer внутри шаблона ListBox по умолчанию) странно - когда я впервые встретил его, я подумал, что это должна быть практическая шутка. На самом деле, действительно сложно найти документацию об этом, но кратко упоминается здесь:

Событие ManipulationBoundaryFeedback позволяет приложениям или компонентам обеспечивать визуальную обратную связь, когда объект попадает на границу. Например, класс Window обрабатывает событие ManipulationBoundaryFeedback, чтобы вызвать небольшое перемещение окна, когда встречается его край.

Итак, путь вокруг него - обработать ManipulationBoundaryFeedback в ListBox и установить Handled на true:

<ListBox ManipulationBoundaryFeedback="OnManipulationBoundaryFeedback">            
  // ...
</ListBox>

Code-за:

private void OnManipulationBoundaryFeedback(object sender, ManipulationBoundaryFeedbackEventArgs e)
{
    e.Handled  = true;
}