获取网格内的对象坐标

时间:2013-02-07 12:49:42

标签: c# wpf grid coordinates

我的网格看起来像这样:

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

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

my_grid.Children.Add(myBox);

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

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

您可以使用Margin Property移动控件。

  

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

或使用canvas而不是@m-y建议的网格。这是一个DEMO