禁用可编辑ComboBox中的MouseWheel作为ItemTemplate

dro*_*py6 7 wpf combobox listbox itemtemplate mousewheel

我在ListBox中使用ComboBox作为ItemTemplate.我的ComboBox是可编辑的.当用户在组合框中使用鼠标滚轮时,它会改变当前值.我不希望这样.我想要ListBox滚动.这有什么解决方案吗?我发现的大多数示例都只基于一个只读的ComboBox.似乎我找不到任何解决方案.覆盖OnMouseWheel设置isHandled = true不起作用似乎事件在其他地方处理.我试图在我的ComboBox的ControlTemplate使用的TextBox中覆盖OnMouseWheel但没有成功.

有任何想法吗 ?

dro*_*py6 6

好吧,我的错误,我将PreviewMouseWheel放在我的ItemTemplate的错误UIElement上.这是有效的:

private void myCombo_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
{
    e.Handled = true;
}
Run Code Online (Sandbox Code Playgroud)

尽管如此,"parentListBox.RaiseEvent(args);" 不起作用.


小智 1

我用以下方法解决了一次类似的问题:

WPF:

<ComboBox MouseWheel="ComboBox_MouseWheel"/>
Run Code Online (Sandbox Code Playgroud)

C#:

private void ComboBox_MouseWheel(object sender, MouseWheelEventArgs e)
{
    e.Handled = true;
    MouseWheelEventArgs args = new MouseWheelEventArgs(e.MouseDevice, e.Timestamp, e.Delta);
    args.RoutedEvent = UIElement.MouseWheelEvent;
    args.Source = sender;
    parentListBox.RaiseEvent(args);
}
Run Code Online (Sandbox Code Playgroud)