Допустим, у меня есть этот код XAML:
<DockPanel Name="pan">
<Label Content="AAA" Name="lab1" />
<Label Content="BBB" Name="lab2" />
<Label Content="CCC" Name="lab3" />
</DockPanel>
Я поставил свой код и хочу узнать, каковы координаты lab2
в пределах pan
. Hovewer Я хочу игнорировать любой существующий 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.
Пожалуйста, оставьте комментарий, если что-то неясно.
Спасибо