2014-11-14 117 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());