WPF改变对象的位置

时间:2015-12-12 11:24:19

标签: c# wpf position

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

让我们假设在我的WPF中我有一个名为“Windajo”的Rectangle,我想将其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 (85, i, 80, 0)分配“85”。一些变量。怎么做?

我想在代码中执行此操作,如上例所示。

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

2 个答案:

答案 0 :(得分:1)

您可以采用这样的实际值:

Windajo.Margin.Left 
Windajo.Margin.Right

对此:

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

答案 1 :(得分:0)

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

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,你需要将Top margin减少10(如果它是Top Aligned)或者如果它是Bottom Aligned则将Bottom margin增加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