gpt4 book ai didi

.net - WPF:获取子 UIElement 在其父级中的位置。如果有,请忽略 RenderTransform

转载 作者:行者123 更新时间:2023-12-04 23:09:11 26 4
gpt4 key购买 nike

假设我有这个 XAML 代码:

<DockPanel Name="pan">
<Label Content="AAA" Name="lab1" />
<Label Content="BBB" Name="lab2" />
<Label Content="CCC" Name="lab3" />
</DockPanel>

我后面的代码我想找出 lab2的坐标是多少内 pan . 霍威尔我想忽略任何当前的 lab2 RenderTransform | .因此,解决方案必须为上述代码和以下代码返回相同的坐标:
<DockPanel>
<Label Content="AAA" />
<Label Content="BBB" >
<Label.RenderTransform>
<TranslateTransform Y="20"/>
</Label.RenderTransform>
</Label>
<Label Content="CCC" />
</DockPanel>

换句话说,我想要由 ArrangeOverride 设置的位置 pan的方法打电话时 Arrangebut2 .我称之为“逻辑位置”。 '视觉位置'可以通过调用以下方法获得:
private Point visualPoss() {
Point lab2Vis = lab2.PointToScreen(new Point(0, 0));
Point panVis = pan.PointToScreen(new Point(0, 0));
return new Point(lab2Vis.X - panVis.X, lab2Vis.Y - panVis.Y);
}

但这不是我的问题的解决方案,因为此 visualPoss() 的返回值不等于上面的两个 XAML 代码示例。

如果有什么不清楚的,请发表评论。

谢谢

最佳答案

看起来有一个非常简单明了的解决方案:

private Point logicalPoss() {
Vector vec = VisualTreeHelper.GetOffset(lab2);
return new Point(vec.X, vec.Y);
}

看起来它运行良好。如果您知道场景何时不起作用,请发表评论。

关于.net - WPF:获取子 UIElement 在其父级中的位置。如果有,请忽略 RenderTransform,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4760310/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com