title author date CreateTime categories
win10 uwp 获得元素绝对坐标
lindexi
2018-08-10 19:16:51 +0800
2018-2-13 17:23:3 +0800
Win10 UWP

有时候需要获得一个元素,相对窗口的坐标,在修改他的位置可以使用。
那么 UWP 如何获得元素坐标?
我提供了一个方法,可以获得元素的坐标。

首先需要获得元素,如果没有获得元素,那么如何得到他的坐标?

假如 xaml 是这样,而我需要获得 MainTextBlock 相对窗口的坐标

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<TextBlock x:Name="MainTextBlock" Margin="10,10,10,10" Text="Hello" />
</Grid>

那么获得元素绝对坐标可以这样写,绝对坐标的意思就是元素相对窗口的坐标。

         public MainPage()
{
this.InitializeComponent();
var t = MainTextBlock.TransformToVisual(Window.Current.Content);
Point screenCoords = t.TransformPoint(new Point(0, 0));
}

上面代码就可以获得元素坐标,坐标相对于窗口

那么如何获得他相对其他元素的坐标?

假如需要获得元素相对他的上坐标,这时可以看下面代码

            var t = MainTextBlock.TransformToVisual((UIElement)MainTextBlock.Parent);
Point screenCoords = t.TransformPoint(new Point(0, 0));

于是可以看到 TransformToVisual 传入的是哪个元素,就是获得相对于这个元素的坐标。

获得元素的坐标有什么用?可以用在如 Flyout的定位,如果使用了 ToggleButton ,他没有自己 Flyout ,所以就需要在其他地方定义一个 Flyout 然后通过获得控件位置显示出来。如何指定 Flyout 的位置参见 win10 uwp 右击浮出窗在点击位置

所以就可以让浮出窗在需要显示的按钮上显示,下面的图片是我偷一个大神的,他就是使用这个方法做出来。

参见:http://stackoverflow.com/questions/12387449/how-to-get-the-absolute-position-of-an-element/12388558#12388558

最新文章

  1. JavaScript中数组迭代方法(jquery)
  2. ubuntu 跟xshell的问题
  3. JS/jquery获取iframe内部元素和ifame中获取外部元素精华
  4. 关于tp.5.0角色管理导致的创建角色登陆报错问题解决!
  5. Excel中设置下拉列表的来源怎么选择其他工作表的内容
  6. 初识API函数
  7. How about xlogs are missing and xlogs are deleted
  8. StringUtils中 isEmpty 和isBlank的区别
  9. mybatis使用
  10. Keil C51中函数指针的使用
  11. 经验36--C#无名(大事,物...)
  12. ubuntu 14.04 rabbitmq集群部署
  13. C 头文件、宏、编译问题
  14. FFM及DeepFFM模型在推荐系统的探索及实践
  15. Appium Desktop-Permission to start activity denied.
  16. 8个超实用的jQuery插件应用
  17. 字典和json 的区别 和转换
  18. 机器学习实战(Machine Learning in Action)学习笔记————04.朴素贝叶斯分类(bayes)
  19. ArcMap中条件语句的bug
  20. Dijkstra、Bellman_Ford、SPFA、Floyd算法复杂度比较

热门文章

  1. leetcode 21-30 easy
  2. 通过pip工具安装selenium(初次安装、升级、降级)
  3. MyEclipse编写ExtJS卡死问题解决方法
  4. C# event 和delegate的区别
  5. 每日算法之三十四:Multiply Strings
  6. mysql实现行拼接、列拼接
  7. 如何把一个普通的Eclipse项目改造成Eclipse Plugin项目
  8. Pod在多可用区worker节点上的高可用部署
  9. Markdown Linux
  10. js将canvas保存成图片并下载