WPF Listbox with touch inertia pulls down entire window

后端 未结 1 1867
半阙折子戏
半阙折子戏 2021-02-12 17:57

I have a full screen WPF application built for a touch monitor, and I have some Listboxs on the main screen.

When I flick the \'Listbox\' it scrolls fine,

相关标签:
1条回答
  • 2021-02-12 18:52

    Yes, that default behaviour of the ListBox (or rather, the ScrollViewer inside the default ListBox template) is weird - when I first came across it, I thought it must be a practical joke. In fact, it's really hard to find any documentation about it - but it is briefly mentioned here:

    The ManipulationBoundaryFeedback event enables applications or components to provide visual feedback when an object hits a boundary. For example, the Window class handles the ManipulationBoundaryFeedback event to cause the window to slightly move when its edge is encountered.

    So, a way around it is to handle ManipulationBoundaryFeedback on the ListBox, and set Handled to true:

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

    Code-behind:

    private void OnManipulationBoundaryFeedback(object sender, ManipulationBoundaryFeedbackEventArgs e)
    {
        e.Handled  = true;
    }
    
    0 讨论(0)
提交回复
热议问题