C# WPF更改对象的位置

C# WPF更改对象的位置,c#,wpf,position,C#,Wpf,Position,您知道在某种操作(例如按buton键)后,如何为元件分配新位置吗 假设在我的WPF中有一个名为“Windajo”的矩形,我想将其Y位置更改为实际Y位置+10 我一点也不知道如何获得实际头寸,我唯一能改变头寸的功能是边距。很多人都在参考画布,但我无法让它工作 我设法用边距改变了对象的位置,但它(我猜)离主窗口边框有一段距离,使用它有点烦人 private async void button_Click(object sender, RoutedEventArgs e) {

您知道在某种操作(例如按buton键)后,如何为元件分配新位置吗

假设在我的WPF中有一个名为“Windajo”的矩形,我想将其Y位置更改为实际Y位置+10

我一点也不知道如何获得实际头寸,我唯一能改变头寸的功能是
边距
。很多人都在参考
画布
,但我无法让它工作

我设法用边距改变了对象的位置,但它(我猜)离主窗口边框有一段距离,使用它有点烦人

private async void button_Click(object sender, RoutedEventArgs e)
        {
    int i = 300;

                do
                {
                    Windajo.Margin = new Thickness(85, i, 80, 0);
                    await Task.Delay(500);
                    i = i - 20;
                } while (i > 100);

        }
如果无法参照最后一个位置,是否有任何方法可以从厚度函数中获得实际值?例如,我想从
厚度(85,I,80,0)
中指定“85”。对一些变量。如何做到这一点

我想在代码内部完成它,就像上面的例子一样


我非常感谢您提供的任何帮助:)

您可以访问厚度结构的各个组件,如下所示:

Windajo.Margin = new Thickness(85, i, 80, 0);
Thickness t = Windajo.Margin;
double left = t.Left;
double top = t.Top;
double right = t.Right;
double bottom = t.Bottom;
如果要将Y增加10,则需要将顶部边距减少10(如果顶部对齐),或将底部边距增加10(如果底部对齐):

Windajo.Margin = new Thickness(85, i - 10, 80, 0); // If Top-Aligned
// -- OR --
Windajo.Margin = new Thickness(85, i - 10, 80, 0); // If Bottom-Aligned

您可以按如下方式获取实际值:

Windajo.Margin.Left 
Windajo.Margin.Right
为此:

Windajo.Margin = new Thickness(85, Windajo.Margin.Top + 10, 80, 0);

绝对定位时不要使用边距。相反,将矩形放入画布,并设置其
Canvas.Left
Canvas.Top
附加属性。在代码隐藏中,您将使用静态方法
Canvas.SetLeft
Canvas.SetTop
,比如
Canvas.SetTop(Windajo,Canvas.GetTop(Windajo)-20)