Выполнение RenderTransform сразу после добавления в Grid вызывает проблемы, потому что элементы не были добавлены в VisualTree - PullRequest
0 голосов
/ 24 января 2011

Все, что я хочу сделать, это добавить свой UserControl в определенную точку сетки.Теперь я могу сделать это с помощью RenderTransform после добавления в Gird, но я не думаю, что они были добавлены в VisualTree, когда это происходит.

Есть ли способ дождаться завершения потока пользовательского интерфейса перед выполнением моего преобразования?Любой способ добавить элемент в сетку, используя пиксели?то есть 40px слева и 40px сверху?

Код, который я использую, выглядит следующим образом ....

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, где я бы хотел, чтобы UserControl был.

Также обратите внимание, что у меня нет строк и столбцов, настроенных на сетке, причина использования сетки заключается в том, чтобы я мог развернуть приложение, и сетка заполнит весь экран, а Canvas - нет.кажется, делают это.

Ответы [ 2 ]

0 голосов
/ 24 января 2011

Я верю UpdateLayout сделает это:

grid.Children.Add(temp);
grid.UpdateLayout();
TranslateTransform transform = new TranslateTransform(-oldPosition.X+temp.posx, -oldPosition.Y+temp.posy);
temp.RenderTransform = transform;
0 голосов
/ 24 января 2011

Разве вы не можете просто сделать:

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