2014-01-29 4 views
1

listview를 스크롤 할 때 클릭 한 점의 '실제'Y 값을 얻고 싶습니다. 코드 여기아래로 스크롤하면 listview 내의 좌표를 가져옵니다

<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이라고하고, 여기에

은 XAML입니다 항상 309이지만 아래로 스크롤하면 309보다 높은 값을 얻고 싶습니다. '실제'Y 좌표를 찾거나 스크롤 한 후 스크롤하여 계산할 수있는 방법을 찾을 수있는 방법이 있습니까? 조정 된 값? scrollviewer 컨트롤에서 목록보기를 감싸는 것은 옵션이 아닙니다. 실제 Y 값을 결정하기 위해 어떤 답변

+0

Staock Overflow에 오신 것을 환영합니다. 귀하의 질문은 잘 쓰여졌지만 질문과 관련된 언어를 설명하는 태그를 추가하여 개선 할 수 있습니다 – GreenAsJade

+0

감사합니다. 귀하의 도움에 감사드립니다. – Isildur

+0

누군가가 실제로 그 질문에 답할 수 있기를 바랍니다. 나는 vb.net 사람이 아니지만, 일반적으로 스크롤러가 얼마나 멀리 스크롤되는지 묻는이 질문에 대한 대답을 기대합니다. 어쩌면 그걸보고 싶은 것입니다 ... – GreenAsJade

답변

0

에 대한

덕분에, 당신은에서 ScrollViewer 당신을 말할 수있는 스크롤 된 양을 알 필요가있다.

스크롤 뷰어는 목록보기 (Media.VisualTreeHelper.GetChild(Mylistview,0).Child)의 하위 항목으로 가져올 수 있으며 현재 세로 오프셋 (Scrollviewer.VerticalOffset)이 있습니다. 수직 오프셋은 y 좌표 오프셋을 제공하지 않고 대신 목록보기 항목의 양을 아래로 스크롤합니다. 그것으로 쉽게 작업 할 수 있습니다.

관련 문제