2014-01-29 46 views
1

我想獲得當我向下滾動列表視圖時單擊的點的「真實」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座標,或者找出我滾動多少,然後能夠計算調整後的值? 在scrollviewer控件中包裝listview不是一個選項順便說一句。

感謝您的任何答案

+0

歡迎來到Staock溢出。您的問題編寫得很好,但您可以通過添加描述與問題相關的語言的標籤來改善問題 – GreenAsJade

+0

謝謝,感謝您的幫助。 – Isildur

+0

希望有人能一起回答這個問題。我不是一個vb.net的人,但通常我會希望這個問題的答案需要向滾動者詢問它滾動的距離。也許這是要看的東西... – GreenAsJade

回答

0

爲了確定真正的Y值,你需要知道已滾動量,其中的ScrollViewer可以告訴你。

您可以將scrollviewer作爲listview(Media.VisualTreeHelper.GetChild(Mylistview,0).Child)的子項獲取,並從那裏獲得當前具有的垂直偏移量(Scrollviewer.VerticalOffset)。 垂直偏移量不會爲您提供y座標偏移量,而是您獲得向下滾動的listview項目數量。你可以輕鬆地使用它。

相關問題