win10 uwp 获得元素绝对坐标
win10 元素 获得 UWP 坐标 绝对
2023-09-27 14:28:55 时间
有时候需要获得一个元素,相对窗口的坐标,在修改他的位置可以使用。
那么 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 右击浮出窗在点击位置
所以就可以让浮出窗在需要显示的按钮上显示,下面的图片是我偷一个大神的,他就是使用这个方法做出来。
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。
相关文章
- win11怎么回去win10?四种方法教你!
- win10系统找不到指定文件怎么办?10种解决方法帮你解决
- WIN10电脑中禁止软件/.exe文件联网
- Win10 安装msi 提示2502、2503的错误代码 -- 命令提示符(管理员) -- msiexec /package
- win10-mysql卸载干净
- Win10家庭版系统也能使用组策略啦!终于关闭系统自动更新了
- Win10非官方SnapChat应用寄希望于开源版
- win10安装nvm
- 戴尔台式机重装win10系统及bios设置教程(uefi+gpt)
- 【Win10 + Ubuntu 16.04/18.04双系统 + 双硬盘/单硬盘 安装】传统意义双系统
- 微软白皮书:Win10一周年更新正式版是有史以来最安全Windows系统
- 微软:超过96%的企业用户正在测试Win10
- 微软悲剧了!Win10免费更新推送遭新诉讼
- win10下交换CapLock和Esc按键