我需要以某种方式知道用户是否单击或将鼠标移动到 ListBox 本身或其滚动条上,但现在我总是收到消息,就像它发生在列表框上/上方一样。
问问题
262 次
1 回答
1
如果您为您的问题提供了一些背景信息,将更容易回答。在对拖放操作实现视觉反馈时,我不得不做类似的事情,尽管我不知道这是否是你正在做的事情。因此,我所能做的就是告诉你我是如何处理我的问题的。
基本上,我使用了这样的SystemParameters.VerticalScrollBarWidth
属性:
...
if (mouseXPositionInListBox > dragSourceControl.ActualWidth -
SystemParameters.VerticalScrollBarWidth - dragSourceControl.Padding.Right)
isScrolling = true;
...
它也可以在 XAML 中使用:
<Grid Width="{DynamicResource
{x:Static SystemParameters.VerticalScrollBarWidthKey}}" />
如果您正在使用另一个维度,那么还有一个SystemParameters.HorizontalScrollBarHeight
property。
更新>>>
ScrollBar
您可以通过读取 的值来检测(垂直)是否可见ScrollViewer.VerticalScrollBarVisibilityProperty DependencyProperty
:
ScrollBarVisibility visibility = (ScrollBarVisibility)yourListbox.GetValue(
ScrollViewer.VerticalScrollBarVisibilityProperty);
您可能也有兴趣使用该ScrollViewer.ViewportWidth
属性和/或该ScrollViewer.ViewportHeight
属性,它将告诉您ScrollViewer
.
于 2013-10-30T11:07:17.913 回答