C# 在添加到网格后立即执行RenderTransform会导致问题,因为元素尚未添加到VisualTree

C# 在添加到网格后立即执行RenderTransform会导致问题,因为元素尚未添加到VisualTree,c#,wpf,expression-blend,C#,Wpf,Expression Blend,我所要做的就是在网格上的特定点添加我的UserControl。 现在我可以在添加到网格后使用RenderTransform来完成这项工作,但我认为在这种情况下,它们并没有被添加到VisualTree中 在执行转换之前,是否有方法等待UI线程完成?有没有办法使用像素将项目添加到网格中?i、 e.从左边40像素,从上面40像素 我使用的代码如下 grid.Children.Add(temp); TranslateTransform transform = new TranslateTransform

我所要做的就是在网格上的特定点添加我的UserControl。 现在我可以在添加到网格后使用RenderTransform来完成这项工作,但我认为在这种情况下,它们并没有被添加到VisualTree中

在执行转换之前,是否有方法等待UI线程完成?有没有办法使用像素将项目添加到网格中?i、 e.从左边40像素,从上面40像素

我使用的代码如下

grid.Children.Add(temp);
TranslateTransform transform = new TranslateTransform(-oldPosition.X+temp.posx, -oldPosition.Y+temp.posy);              
temp.RenderTransform = transform;
oldPosition是它首先添加到网格的位置,一个点。 temp.posx和temp.posy是我希望用户控件所在的x和y坐标

还要注意的是,我没有在网格上设置任何行和列,使用网格的原因是为了使应用程序最大化,网格将填充整个屏幕,画布似乎不能做到这一点。

您不能这样做:

grid.Children.Add(temp);
Grid.SetColumn(textBlock, Y);
Grid.SetRow(textBlock, X);

我相信,
UpdateLayout
可以做到:

grid.Children.Add(temp);
grid.UpdateLayout();
TranslateTransform transform = new TranslateTransform(-oldPosition.X+temp.posx, -oldPosition.Y+temp.posy);
temp.RenderTransform = transform;

我已经尝试过这个精确的代码,但是控制仍然在屏幕中间结束。我想这是因为我没有为网格设置任何行或列,有没有办法这样做,我仍然可以拥有一个全屏应用程序?谢谢你的回复!这有助于局势的发展!:)我现在只需要一个按钮就可以添加控件并定位它们。我认为没有办法从构造函数调用这个方法,所以我根本不需要按下按钮?因此,它将在启动时添加和定位。非常感谢。