0

我有一个看起来像这样的网格:

<grid name="my_grid"></grid>

然后我有一个名为 paramBox 的类对象,名为myBox。这个对象被插入到网格中,如下所示:

my_grid.Children.Add(myBox);

现在这是我的问题:有没有办法在网格内获取myBox的坐标(x 和 y 值) ?我试过使用 PointToScreen 没有任何运气。如果我没有在类/网格中声明任何 x 和 y 值,是否可以获得坐标?

4

2 回答 2

0

您可以使用Margin 属性来移动控件。

边距是布局创建 UI 时此对象与将相邻的其他对象之间的空间。参与布局的其他对象可能是对等对象(例如公共父控件集合中的其他对象),也可能是该对象在可视树中的父对象。

或按照@my 的建议使用画布而不是网格。这是一个演示

于 2013-02-07T13:03:06.603 回答
0

我建议您使用 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;
}
于 2013-02-07T12:51:32.047 回答