如何判断元素在屏幕上的位置

时间:2014-11-14 19:06:54

标签: c# wpf xaml listview

我在listview中有几百个元素,我想知道哪些元素在屏幕上以及在什么位置。如果我做Canvas.getLeft(),它只返回零。我希望能够将最接近屏幕中间的项目进行变换,使其比其他项目更大。

2 个答案:

答案 0 :(得分:2)

如果您希望获得元素相对于Window的位置,则可以执行以下操作:

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

yourWindow可以替换为包含yourElement的任何父视觉效果 - 例如,如果您想要相对于ListView的位置,则可以将其替换为yourListView等等。

答案 1 :(得分:0)

如果您想获取ListViewItem(或任何Visual)的左上角点的屏幕坐标,您只需使用 {{3}方法即可} 并传入一个空的Point:

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