2014-11-14 115 views
1

我在列表視圖中有幾百個元素,我想知道屏幕上的哪些元素以及在什麼位置。如果我做了Canvas.getLeft()它只是返回零。我希望能夠將最接近屏幕中間的項目轉換爲比其他項目更大的項目。如何判斷元素在屏幕上的位置

+0

當你說「在屏幕上,」你的意思是相對於(0,0)的位置的窗口座標,或相對到整個OS可見區域? – furkle 2014-11-14 19:08:43

回答

2

如果你想獲得你的元素相對的位置,你的Window,你可以做到以下幾點:

Point relativePos = yourElement 
    .TransformToAncestor(yourWindow) 
    .Transform(new Point(0, 0)); 

yourWindow可以包含yourElement任何父可視更換 - 如果,例如,您相對位置想的ListView,你可以用yourListView更換等

+0

你是一個拯救生命的人。這也是我解決方案的一個簡單答案。我喜歡你,但我沒有15的聲望? – Nivert9 2014-11-14 19:16:29

0

如果你想獲得一個ListViewItem(或任何Visual)的左上角點的屏幕座標,你可以ü SE中的方法Visual.PointToScreen,並傳遞一個空點:

var pointInScreen = yourListViewItem.PointToScreen(new Point());