У меня есть UIElements (круги/прямоугольники) внутри холста. Я хочу получить X/Y для UIElement относительно его родителя (Canvas). Но я не могу получить его.
Для этого есть несколько решений. Я попытался сделать это (найти положение Button/UIElement на экране относительно сетки Windows Phone)
var transform = button.TransformToVisual(grid);
Point absolutePosition = transform.Transform(new Point(0, 0));
Но я получаю 0,0 в absolutePosition. Я могу правильно видеть круги на карте. Но я не уверен, почему я ошибаюсь X/Y.
Вот мой фактический код.
Canvas.SetLeft(shape, Position.X);
Canvas.SetBottom(shape, Position.Y);
canvas.Children.Add(shape);
var transform = shape.TransformToVisual(canvas);
Point absolutePosition = transform.Transform(new Point(0, 0));
Что бы я ни передал transform.Transform
, я получаю это на выходе.
TranslatePoint
является предпочтительным подходом. Просто замените ссылку наgrid
в его/ее примере ссылкой на ваш холст. - person Steven Rands   schedule 27.01.2015