【发布时间】:2012-09-12 20:49:15
【问题描述】:
假设一些简单的事情,例如:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="300" />
<ColumnDefinition Width="300" />
</Grid.ColumnDefinitions>
<TextBlock Name="MainTextBlock" Grid.Column="1" Text="Hello" />
</Grid>
如何获取MainTextBlock的绝对位置?
【问题讨论】:
-
你的意思是相对于窗口、网格还是用户屏幕的位置?相对于网格,可以获取或设置 Margin 属性;在画布中 - Top 和 Left 属性。
-
你必须手动计算控件的位置,阅读这里blogs.msdn.com/b/llobo/archive/2006/05/02/…
-
WinRT中恐怕没有“DllImport”。
-
按照理论:先在窗口中找到位置,然后在屏幕上找到窗口的位置。做减法,你会得到结果。你能解释一下为什么你需要一个控件的绝对位置吗?
-
如果接受的答案在您的项目中不起作用(就像我一样),您可以编写一个循环来总结 UIElement 的 ActualOffset 及其父、祖父等直到根元素。
标签: c# windows-8 microsoft-metro