2011-01-24 1 views
0

원하는 작업은 Grid의 특정 지점에 UserControl을 추가하는 것입니다. Gird에 추가 한 후 RenderTransform을 사용하여이 작업을 수행 할 수 있습니다. 그러나 이러한 상황이 발생하면 VisualTree에 추가 된 것으로 생각하지 않습니다.요소를 VisualTree에 추가하지 않았기 때문에 Grid에 추가 한 직후에 RenderTransform을 수행하면 문제가 발생합니다.

변환을 수행하기 전에 UI 스레드가 완료 될 때까지 기다리는 방법이 있습니까? 픽셀을 사용하여 격자에 항목을 추가하는 방법은 무엇입니까? 즉 왼쪽에서 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는 UserControl을 원할 때 x 및 y 좌표입니다.

격자에 행과 열이 설정되어 있지 않으므로 그리드를 사용하는 이유는 응용 프로그램을 최대화 할 수 있고 그리드가 전체 화면을 채울 수 있으므로 Canvas가 보이지 않는 것입니다. 이 작업을 수행.

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

답변

0

당신은 할 수 없습니다

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

내가 정확한 코드 것을 시도하지만 컨트롤은 여전히 ​​오른쪽의 중간에 끝 화면. 그리드의 행이나 열을 설정하지 않았기 때문에 이것이라고 생각합니다. 이렇게하면 전체 화면 응용 프로그램을 가질 수 있습니까? 답장을 보내 주셔서 감사합니다! – christoefar

0

내가 UpdateLayout 그것을 할 것으로 예상 :

+0

그게 상황을 도왔습니다! :) 이제 하나의 버튼을 사용하여 컨트롤을 추가하고 위치를 지정할 수 있습니다. 나는이 메소드를 Constructor에서 호출하는 방법이 없으므로 버튼을 전혀 누르지 않아도된다. 따라서 시작시 추가 및 위치 지정이 이루어집니다. 고맙습니다! – christoefar

관련 문제