Bubbling scroll events from a ListView to its parent

前端 未结 8 1424
深忆病人
深忆病人 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:01

    Thanks Keyle

    I adapted your answer as an RX extension method

        public static IDisposable ScrollsParent(this ItemsControl itemsControl)
        {
            return Observable.FromEventPattern(
               x => itemsControl.PreviewMouseWheel += x,
               x => itemsControl.PreviewMouseWheel -= x)
               .Subscribe(e =>
               {
                   if(!e.EventArgs.Handled)
                   {
                       e.EventArgs.Handled = true;
                       var eventArg = new MouseWheelEventArgs(e.EventArgs.MouseDevice, e.EventArgs.Timestamp, e.EventArgs.Delta)
                       {
                           RoutedEvent = UIElement.MouseWheelEvent,
                           Source = e.Sender
                       };
                       var parent = ((Control)e.Sender).Parent as UIElement;
                       parent.RaiseEvent(eventArg);
                   }
               });
        }
    

    Usage:

     myList.ScrollsParent().DisposeWith(disposables);
    

提交回复
热议问题