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

时间:2011-01-24 15:50:00

标签: c# wpf expression-blend

我想要做的就是在网格上的特定点添加我的UserControl。 现在我可以在添加到Gird之后使用RenderTransform执行此操作,但我不认为在发生这种情况时它们已添加到VisualTree中。

在进行转换之前,有没有办法等待UI线程完成?有没有办法使用像素将项目添加到网格?即从左边40px和从顶部40px?

我使用的代码如下....

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

oldPosition是首先添加到gird的地方,即Point。 temp.posx和temp.posy是我想要UserControl的x和y坐标。

另请注意,我没有在网格上设置任何行和列,使用网格的原因是我可以让应用程序最大化并且网格将填满整个屏幕,Canvas似乎没有做此

2 个答案:

答案 0 :(得分:0)

你不能这样做:

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

答案 1 :(得分:0)

我相信UpdateLayout会这样做:

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