C# 如何获得元素的绝对位置?

C# 如何获得元素的绝对位置?,c#,windows-8,microsoft-metro,C#,Windows 8,Microsoft Metro,假设一些简单的事情,比如: <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="300" /> <ColumnDefinition Width="300" /> </Grid.ColumnDefinitions> <TextBlock Name="MainTextBlock" Grid.Column="1" Te

假设一些简单的事情,比如:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="300" />
        <ColumnDefinition Width="300" />
    </Grid.ColumnDefinitions>

    <TextBlock Name="MainTextBlock" Grid.Column="1" Text="Hello" />
</Grid>


如何获得
MainTextBlock
的绝对位置?

我认为这会起作用

var ttv = MainTextBlock.TransformToVisual(Window.Current.Content);
Point screenCoords = ttv.TransformPoint(new Point(0, 0));

你指的是相对于窗口、网格或用户屏幕的位置吗?相对于网格,可以获取或设置边距属性;在canvas-Top和Left属性中。您必须手动计算控件的位置,请阅读此处。恐怕WinRT中没有“DllImport”。只需遵循以下理论:首先在窗口中找到位置,然后在屏幕上找到窗口的位置。做减法运算,你就会得到结果。你能解释一下为什么你需要一个控件的绝对位置吗?很好,这正是我想要的,它可以帮助我编写需要cur的应用程序并知道它的位置。但是当控件在页面的MainPage.Frame中可以得到该位置吗?