【问题标题】:Get coordinates within listview when scrolled down向下滚动时获取列表视图中的坐标
【发布时间】:2014-01-30 17:47:47
【问题描述】:

我想获得向下滚动列表视图时单击的点的“真实”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坐标,或者找出我向下滚动了多远,然后能够计算调整后的值? 顺便说一句,将列表视图包装在滚动查看器控件中不是一个选项。

感谢您的任何回答

【问题讨论】:

  • 欢迎来到 Staock Overflow。您的问题写得很好,但您可以通过添加描述与问题相关的语言的标签来改进
  • 谢谢,感谢您的帮助。
  • 希望有人能真正回答这个问题。我不是 vb.net 的人,但通常我希望这个问题的答案需要询问滚动条它滚动了多远。也许这是值得研究的事情......
  • 这是我的第一个想法,但我不知道如何访问 ListView 的内置 ScrollViewer。我不想在控件周围包裹一个额外的滚动查看器。 vb.net 或 C# 中的解决方案表示赞赏。

标签: wpf vb.net listview scroll coordinate


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2014-11-15
    • 2018-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 2021-07-17
    相关资源
    最近更新 更多