xaml:
<ScrollViewer HorizontalAlignment="Center" PreviewMouseWheel="myScrollViewer_PreviewMouseWheel" Name="myScrollViewer" VerticalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Auto">
<Grid Width="1200">
<ListBox ScrollViewer.VerticalScrollBarVisibility="Visible" MouseMove="listbox_MouseMove" Background="AliceBlue" Height="350" Width="200" HorizontalAlignment="Center" Name="listbox"/>
</Grid>
</ScrollViewer>
CS:
private void myScrollViewer_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
{
if (e.Delta < 0) // wheel down
{
if (myScrollViewer.HorizontalOffset + e.Delta > 0)
{
myScrollViewer.ScrollToHorizontalOffset(myScrollViewer.HorizontalOffset + e.Delta);
}
else
{
myScrollViewer.ScrollToLeftEnd();
}
}
else //wheel up
{
if (myScrollViewer.ExtentWidth > myScrollViewer.HorizontalOffset + e.Delta)
{
myScrollViewer.ScrollToHorizontalOffset(myScrollViewer.HorizontalOffset + e.Delta);
}
else
{
myScrollViewer.ScrollToRightEnd();
}
}
}
现在在鼠标滚轮上,scrollviewer正在滚动,并且如果我的鼠标移过ListBox。我想要:如果我的鼠标越过ListBox并停留了一段时间(也许1或2秒),则滚动应该移至ListBox。如果鼠标没有停留在ListBox上一会(1或2秒),则滚动不应移动到ListBox。ScrollViewer中可能有多个ListBoxes。
将其添加到您的列表框:
ScrollViewer.CanContentScroll =“ True”
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句