【问题标题】:Capturing mouse wheel on listbox items在列表框项目上捕获鼠标滚轮
【发布时间】:2013-01-16 10:05:52
【问题描述】:

我有一个列表框,其中填充了相对较少的项目。这些项目不适合屏幕,因此列表框会自动在右侧获得一个垂直滚动条。滚动条响应鼠标滚轮,但列表框项目不响应。如何使项目响应鼠标滚轮?

提前致谢!

--纳乔

【问题讨论】:

标签: wpf mousewheel listboxitem


【解决方案1】:

如果您想避免 ListBox 响应鼠标滚轮事件,您需要在 ListBox 元素的上下文中处理鼠标滚轮事件。

在该处理程序中,您可以设置 e.Handled=true 这将停止事件冒泡到包含的列表框。

您不妨将该语句放在 ListBoxItem 内的包含元素中。

【讨论】:

    【解决方案2】:

    这会选择我在 WPF 窗口中的列表框中的项目。当您转动鼠标滚轮时,会选择一个 ListBox 项。 ListBox 在此之前获得焦点,并且第一项已被选中。

    在类文件中放:

    private void ListBox1_MouseWheel(object sender, MouseWheelEventArgs e)
    {
        int cap = (ListBox1.Items.Count) - 1;
        int place = ListBox1.SelectedIndex;
        int incre = e.Delta/120;
        place += incre;
        if (place > cap)
        {
            place = 0;
        }
        if (place < 0)
        {
            place = cap;
        }
        ListBox1.SelectedIndex = place;
        ListBox1.ScrollIntoView(itemNoresult1.SelectedItem);
    }
    

    在列表框的 XAML 属性中输入:PreviewMouseWheel="ListBox1_MouseWheel"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-18
      • 2018-05-30
      • 2013-04-06
      • 1970-01-01
      相关资源
      最近更新 更多