Я обновляю приложение silverlight beta 2 до RC0 и имею функцию, которая переводит точку из дочернего элемента в его родительский. Цель этой функции - убедиться, что элемент находится точно над дочерним элементом, даже если они не находятся на одном холсте и не имеют общего родительского элемента.
Вот текущая функция:
protected Point TranslatePosition(Point current, Panel from, Panel to, MouseEventArgs e)
{
Point rtn = new Point(-1, -1);
// get point relative to existing parent
Point fromPoint = e.GetPosition(from);
// get point relative to new parent
Point toPoint = e.GetPosition(to);
// calculate delta
double deltaX = fromPoint.X - toPoint.X;
double deltaY = fromPoint.Y - toPoint.Y;
// calculate new position
rtn = new Point(current.X - deltaX, current.Y - deltaY);
return rtn;
}
Обратите внимание, что для получения позиции относительно существующего и нового родителя используется функция MouseEventArgs.GetPosition. В тех случаях, когда MouseEventArgs недоступны, мы создавали новый экземпляр и передавали его. Это был взлом, но, похоже, сработало. Теперь в RC0 конструктор MouseEventArgs является внутренним, поэтому этот хак больше не работает.
Любые идеи о том, как написать метод для перевода точки в RC0, который не полагается на MouseEventArgs.GetPosition?