Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 鼠标滚轮事件不存在';如果lisbox中有滚动查看器,则无法在其上正确工作_Wpf_Listbox_Mousewheel - Fatal编程技术网

Wpf 鼠标滚轮事件不存在';如果lisbox中有滚动查看器,则无法在其上正确工作

Wpf 鼠标滚轮事件不存在';如果lisbox中有滚动查看器,则无法在其上正确工作,wpf,listbox,mousewheel,Wpf,Listbox,Mousewheel,我有一个带有垂直滚动条的外部列表框,每个项目上都有一个滚动查看器,可能有一个水平滚动条。问题是,当我使用鼠标时,事件不会到达外部列表框,因此滚动不起作用。我已经在ScrollViewer上设置了Focusable=false,但这只是阻止它们处理键盘事件,而不是鼠标事件。如何阻止内部scrollviewer捕获鼠标滚轮事件,并允许它冒泡到外部列表框?您可能会找到一些很好的示例。它描述了如何在项控件中禁用鼠标滚轮。问题是,ListBox本身有一个ScrollViewer,它会在鼠标滚轮事件到达包含

我有一个带有垂直滚动条的外部列表框,每个项目上都有一个滚动查看器,可能有一个水平滚动条。问题是,当我使用鼠标时,事件不会到达外部列表框,因此滚动不起作用。我已经在ScrollViewer上设置了Focusable=false,但这只是阻止它们处理键盘事件,而不是鼠标事件。如何阻止内部scrollviewer捕获鼠标滚轮事件,并允许它冒泡到外部列表框?

您可能会找到一些很好的示例。它描述了如何在
项控件中禁用鼠标滚轮。问题是,ListBox本身有一个ScrollViewer,它会在鼠标滚轮事件到达包含ListBox的父ScrollViewer之前吞噬鼠标滚轮事件

您需要处理ListBox上的预览鼠标滚轮事件,从而防止它们进一步向下挖掘,同时向父ScrollViewer引发冒泡事件

这对我很有用:

private void ListBoxThatNowScrolls_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
{
    e.Handled = true;

    var e2 = new MouseWheelEventArgs(e.MouseDevice, e.Timestamp, e.Delta);
    e2.RoutedEvent = ListBox.MouseWheelEvent;
    e2.Source = e.Source;

    ListBoxThatNowScrolls.RaiseEvent(e2);
}

是否确实没有在某处处理事件并将Handled设置为true?MouseWheelEvent是一个RoutedEvent,因此它应该很好地路由/冒泡。也许你需要展示一些XAML,你可能会在这个问题上找到一些很好的答案:感谢Rachel的链接,我定义了一个NoWheelScrollViewer,正如上面所描述的那样worked@Rachel,如果您可以将您的评论复制到答案中,并且ovatsus可以将此问题标记为已回答,这将非常有用。非常感谢!我有一种感觉,像这样的事情正在发生。对我来说,这是最好的解决办法。