Bubbling scroll events from a ListView to its parent

前端 未结 8 1439
深忆病人
深忆病人 2020-11-28 06:25

In my WPF application I have a ListView whose ScrollViewer.VerticalScrollBarVisibility is set to Disabled. It is contained within a

8条回答
  •  一向
    一向 (楼主)
    2020-11-28 07:15

    You need to capture the preview mouse wheel event in the inner listview

    MyListView.PreviewMouseWheel += HandlePreviewMouseWheel;
    

    Or in the XAML

    
    

    then stop the event from scrolling the listview and raise the event in the parent listview.

    private void HandlePreviewMouseWheel(object sender, MouseWheelEventArgs e) {
        if (!e.Handled) {
            e.Handled = true;
            var eventArg = new MouseWheelEventArgs(e.MouseDevice, e.Timestamp, e.Delta);
            eventArg.RoutedEvent = UIElement.MouseWheelEvent;
            eventArg.Source = sender;
            var parent = ((Control)sender).Parent as UIElement;
            parent.RaiseEvent(eventArg);
        }
    }
    

    Creds go to @robert-wagner who solved this for me a few months ago.

提交回复
热议问题