如何识别ListBox及其ScrollBar中的鼠标事件

时间:2013-10-30 10:51:56

标签: c# wpf

我需要知道用户是否点击或将鼠标移动到ListBox本身或其滚动条上,但是现在我总是收到类似于列表框上的消息。

1 个答案:

答案 0 :(得分:1)

如果您为问题提供了一些背景信息,那么回答会更容易。在拖放操作上实现视觉反馈时我不得不做类似的事情,虽然我不知道你正在做什么。因此,我所能做的就是告诉你我是如何处理我的问题的。

基本上,我使用了这样的SystemParameters.VerticalScrollBarWidth property

...
if (mouseXPositionInListBox > dragSourceControl.ActualWidth - 
    SystemParameters.VerticalScrollBarWidth - dragSourceControl.Padding.Right) 
    isScrolling = true;
...

它也可以在XAML中使用:

<Grid Width="{DynamicResource 
    {x:Static SystemParameters.VerticalScrollBarWidthKey}}" />

如果您正在使用其他维度,则还有SystemParameters.HorizontalScrollBarHeight property


更新&gt;&gt;&gt;

您可以通过阅读ScrollBar的值来检测(垂直)ScrollViewer.VerticalScrollBarVisibilityProperty DependencyProperty是否可见:

ScrollBarVisibility visibility = (ScrollBarVisibility)yourListbox.GetValue(
    ScrollViewer.VerticalScrollBarVisibilityProperty);

可能也有兴趣使用ScrollViewer.ViewportWidth Property和/或ScrollViewer.ViewportHeight Property,它会告诉您ScrollViewer中可见区域的实际大小