假设我有这个 XAML 代码:
<DockPanel Name="pan">
<Label Content="AAA" Name="lab1" />
<Label Content="BBB" Name="lab2" />
<Label Content="CCC" Name="lab3" />
</DockPanel>
我后面的代码我想找出 inside 的坐标是lab2
什么pan
。但是,我想忽略任何当前的 RenderTransform lab2
。因此,解决方案必须为上述代码和以下代码返回相同的坐标:
<DockPanel>
<Label Content="AAA" />
<Label Content="BBB" >
<Label.RenderTransform>
<TranslateTransform Y="20"/>
</Label.RenderTransform>
</Label>
<Label Content="CCC" />
</DockPanel>
换句话说,我想要调用时方法ArrangeOverride
设置的位置。我称之为“逻辑立场”。'视觉位置'可以通过调用以下方法获得:pan
Arrange
but2
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 代码示例都不相等。
如果不清楚,请发表评论。
谢谢