I currently have a user control that contains items that have a certain X, Y coordinate and there are limits to what those points must be within. In this case those positions are 0 > X > 40 and 0 > Y > 80 (40x80). The control I am hosting those items in is dynamic but has a certain aspect ratio based on window size. I need to translate those X & Y coordinates into relative locations within the user control. Any help is greatly apprecaited! Thanks in advance! If it matters/helps, I'm using Silverlight.
+1
A:
Hi there,
you can use GeneralTransform to determine a UIElement's position relative to a container. Here's a snippet:
/// <summary>
/// Gets the position of the specified element's top left corner, relative to the specified container.
/// </summary>
/// <param name="element"></param>
/// <param name="container"></param>
public static Point GetPosition(UIElement element, UIElement container)
{
if (element == null)
throw new ArgumentNullException("element");
if (container == null)
throw new ArgumentNullException("container");
var gt = element.TransformToVisual(container);
var position = gt.Transform(new Point(0, 0));
return position;
}
Cheers, Alex
alexander.biskop
2010-06-28 12:21:19