当鼠标光标位于其ListBox内的项目上时,父WPF ListBox不会滚动?

时间:2015-05-25 07:38:34

标签: wpf

我有一个ListBox(Parent)和一个ListBox(Child)。如果鼠标光标位于子ListBox的项目上,我无法滚动父ListBox的项目。如何在不管鼠标光标下的项目的情况下滚动父控件。谢谢你的帮助!

我找到了解决此问题的方法:

private void listBox1_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
    {
        var scrollViwer = GetScrollViewer(sender as DependencyObject) as ScrollViewer;
        if (scrollViwer != null)
        {
            if (e.Delta < 0)
            {
                scrollViwer.ScrollToVerticalOffset(scrollViwer.VerticalOffset + 3);
            }
            else if (e.Delta > 0)
            {
                scrollViwer.ScrollToVerticalOffset(scrollViwer.VerticalOffset - 3);
            }
        }
    }

    public static DependencyObject GetScrollViewer(DependencyObject o)
    {
        if (o is ScrollViewer)
        { return o; }

        for (int i = 0; i < VisualTreeHelper.GetChildrenCount(o); i++)
        {
            var child = VisualTreeHelper.GetChild(o, i);

            var result = GetScrollViewer(child);
            if (result == null)
            {
                continue;
            }
            else
            {
                return result;
            }
        }
        return null;
    }

1 个答案:

答案 0 :(得分:0)

最简单的解决方法:

  • 在子列表框
  • 上设置IsEnabled=false

但我现在不知道你的最终目标是什么。 Btw ScrollViewer(ListBox的附属属性)拥有大量属性来设置您的首选行为。