WPF改变对象的位置

WPF changing position of an object

你知道在某种动作(例如按下按钮)后为元素分配新位置的方法吗?

假设在我的 WPF 中我有一个名为 "Windajo" 的矩形,我想将其 Y 位置更改为 actual_Y_position + 10。

我不知道如何获得实际位置,我设法改变位置的唯一功能是 Margin。很多人都在参考 Canvas 但我做不到。

我设法用 Margin 改变了对象的位置,但它(我猜)与 MainWindow 边框有距离并且使用它有点烦人。

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);

        }

如果无法参考最后一个位置,有没有办法从 Thickness 函数中获取实际值?例如,我想从 Thickness (85, i, 80, 0) 分配“85”。到一些变量。如何操作?

我想在代码中完成,就像上面的例子一样。

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

您可以像这样访问 Thickness 结构的各个组件:

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);