我有一个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;
}
答案 0 :(得分:0)
最简单的解决方法:
IsEnabled=false
但我现在不知道你的最终目标是什么。 Btw ScrollViewer(ListBox的附属属性)拥有大量属性来设置您的首选行为。