我希望获得在列表视图中向下滚动时点击的点的“真实”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。
感谢您的回答
答案 0 :(得分:0)
为了确定真实的Y值,你需要知道滚动的数量,滚动查看器可以告诉你。
您可以将滚动查看器作为列表视图(Media.VisualTreeHelper.GetChild(Mylistview,0).Child
)的子项获取,并从那里获得当前具有的垂直偏移量(Scrollviewer.VerticalOffset
)。
垂直偏移量不会为您提供y坐标偏移量,而是向下滚动列表视图项目的数量。您可以轻松使用它。