2013-10-30 39 views
2

我需要以某種方式知道,如果用戶點擊或移動鼠標到列表框本身或者它的滾動條,但現在我總是得到消息,就像它發生在/在列表框中。如何辨別在ListBox的鼠標事件和其滾動

+0

你需要重寫ListBox控件和處理這個自己......不理想,但我不認爲有任何其他方式! ''[ – MoonKnight

回答

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


UPDATE >>>

您可以檢測是否(垂直)ScrollBar可見通過讀取ScrollViewer.VerticalScrollBarVisibilityProperty DependencyProperty的價值:

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

可能也有興趣使用在ScrollViewer.ViewportWidth Property和/或ScrollViewer.ViewportHeight Property它會告訴你ScrollViewer內可見區域的實際大小。

+0

丘是偉大的巫師。 – Yola

+0

但如果沒有滾動條的那一刻,如果有什麼列表中未充分,然後我需要處理的事件拖累? – Yola

相關問題