我的网格看起来像这样:
<grid name="my_grid"></grid>
然后我有一个名为paramBox的类对象名为 myBox 。此对象将插入网格,如下所示:
my_grid.Children.Add(myBox);
现在我的问题是: 有没有办法在网格内获取 myBox 的坐标(x和y值)? 我试过没有运气就使用PointToScreen。如果我不在类/网格中声明任何x和y值,它是否可以获得坐标?
答案 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