WPF Listbox с сенсорной инерцией сносит все окно - PullRequest
17 голосов
/ 22 декабря 2010

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

Когда я щелкаю «Список», он прокручивается нормально, но когда он попадает в конец списка, приложение весь сносится сверху экрана, могу ли я как-то остановить это поведение

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

1 Ответ

33 голосов
/ 22 декабря 2010

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

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

Итак, способ обойти это - обработать ManipulationBoundaryFeedback в ListBox и установить для параметра Handled значение true:

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

Код-за:

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