2

我需要以某种方式知道用户是否单击或将鼠标移动到 ListBox 本身或其滚动条上,但现在我总是收到消息,就像它发生在列表框上/上方一样。

4

1 回答 1

1

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

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

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

它也可以在 XAML 中使用:

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

如果您正在使用另一个维度,那么还有一个SystemParameters.HorizontalScrollBarHeightproperty


更新>>>

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

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

可能也有兴趣使用该ScrollViewer.ViewportWidth属性和/或该ScrollViewer.ViewportHeight属性,它将告诉您ScrollViewer.

于 2013-10-30T11:07:17.913 回答