向下滚动时获取listview中的坐标

时间:2014-01-29 08:26:23

标签: wpf vb.net listview scroll coordinate

我希望获得在列表视图中向下滚动时点击的点的“真实”Y值。

这是XAML:

<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" MaxHeight="350" MinHeight="350" Width="525">
<Grid>
    <ListView Name="MyListView" ScrollViewer.CanContentScroll="True" ScrollViewer.VerticalScrollBarVisibility="Auto">
    </ListView>
</Grid>
</Window>

这里是代码:

Class MainWindow 
Sub New()
    InitializeComponent()
    For i As Integer = 0 To 100
        MyListView.Items.Add(i)
    Next
End Sub
Private Sub MyListView_MouseLeftButtonUp(sender As Object, e As MouseButtonEventArgs) Handles MyListView.MouseLeftButtonUp
    MsgBox(e.GetPosition(MyListView).Y)
End Sub
End Class

我现在的问题是,无论我滚动多远,顶部始终为1,底部始终为309,但当向下滚动时,我希望获得高于309的值。 有没有办法找出我点击的“真正的”Y坐标,或者可能找出我滚动了多远,然后能够计算调整后的值? 在滚动查看器控件中包装列表视图不是一个选项btw。

感谢您的回答

1 个答案:

答案 0 :(得分:0)

为了确定真实的Y值,你需要知道滚动的数量,滚动查看器可以告诉你。

您可以将滚动查看器作为列表视图(Media.VisualTreeHelper.GetChild(Mylistview,0).Child)的子项获取,并从那里获得当前具有的垂直偏移量(Scrollviewer.VerticalOffset)。 垂直偏移量不会为您提供y坐标偏移量,而是向下滚动列表视图项目的数量。您可以轻松使用它。