我有一个看起来像这样的网格:
<grid name="my_grid"></grid>
然后我有一个名为 paramBox 的类对象,名为myBox。这个对象被插入到网格中,如下所示:
my_grid.Children.Add(myBox);
现在这是我的问题:有没有办法在网格内获取myBox的坐标(x 和 y 值) ?我试过使用 PointToScreen 没有任何运气。如果我没有在类/网格中声明任何 x 和 y 值,是否可以获得坐标?
我有一个看起来像这样的网格:
<grid name="my_grid"></grid>
然后我有一个名为 paramBox 的类对象,名为myBox。这个对象被插入到网格中,如下所示:
my_grid.Children.Add(myBox);
现在这是我的问题:有没有办法在网格内获取myBox的坐标(x 和 y 值) ?我试过使用 PointToScreen 没有任何运气。如果我没有在类/网格中声明任何 x 和 y 值,是否可以获得坐标?
我建议您使用 Canvas 而不是 Grid。然后,如果您要移动一个元素,您可以这样做(这可能不完全适合您的问题,但我可能有一些想法):
关于元素MouseDown
事件:
private void Element _MouseDown(object sender, MouseButtonEventArgs e)
{
Point position = e.GetPosition(myCanvas);
this.myElement.RenderTransform =
new TranslateTransform(position.X - myElement/ 2.0,
position.Y - myElement/ 2.0);
this.myCanvas.MouseMove += myCanvas_MouseMove;
this.myCanvas.MouseUp += myCanvas_MouseUp;
}
private void myCanvas_MouseMove(object sender, MouseEventArgs e)
{
Point position = e.GetPosition(this.myCanvas);
((TranslateTransform)(this.myElement.RenderTransform)).X = position.X - myElement/ 2.0;
//
((TranslateTransform)(this.myElement.RenderTransform)).Y = position.Y - myElement/ 2.0;
}
private void myCanvas_MouseUp(object sender, MouseEventArgs e)
{
this.myCanvas.MouseMove -= myCanvas_MouseMove;
this.myCanvas.MouseUp -= myCanvas_MouseUp;
}