2009-11-10 2 views
0

정적 캔버스가 있습니다. 모양 런타임을 추가했습니다. 그런 다음 모양을 유지할 contentcontrol을 추가하려고합니다. 그러나 셰이프가 캔버스에 이미 추가되어 있으므로 논리적 자식 오류가 발생합니다. 누구나 나중에 동적으로 contentcontrol을 추가하는 로직을 유지하는 방법을 알려줄 수 있습니까?캔버스 모든 런타임에 추가 된 셰이프에 콘텐츠 컨트롤을 추가하는 방법

는 XAML : 내부 창 태그 이름 = "CNV"로 빈 캔버스를 유지

C 번호 : 당신이에서 제거해야합니다 있도록

 Ellipse ee = new Ellipse(); 
     ee.Width = 100; 
     ee.Height= 50; 
     ee.Fill= Brushes.Red; 
     ee.Name = "el"; 
     hidden.Children.Add(ee); 

     ContentControl cc = new ContentControl(); 
     cc.BorderBrush = Brushes.Black; 
     cc.Content = ee; 

     cnv.Children.Add(ee); 

답변

0

UIElement 만, 한 부모를 가질 수 있습니다 다른 곳에서 다시 장착하기 전에 Canvas을 다시 장착하십시오.

hidden.Children.Remove(ee); 
cc.Content = ee; 
cnv.Children.Add(ee); 

PS. 당신이하는 것처럼 시각적 인 나무에서 놀기보다는,하려고하는 것은 무엇이든 할 수있는 거의 확실하고 깨끗한 방법이 있습니다. 당신은 또한 호출로 사용자 코드에서

hidden.Children.Add(ee); 

: 켄트가 지적 하듯이

+0

감사합니다. Canvas.Children을 완료했습니다. 제거한 다음 스택 패널에 컨트롤을 추가하면 제대로 작동합니다. – subho

1

요소는 그래서 단순히 줄을 제거, 한 부모가 할 수있는 모든 사용자에

cnv.Children.Add(ee); 
관련 문제