2012-04-30 4 views

답변

0

방금 ​​나 자신이 내 대답을 찾았습니다. 희망이 사람을 도울 수 있습니다 언젠가.

그냥 내 사용자 정의 클래스

public void Add(UserControl element) 
{ 
    bool alreadyExist = false; 
    element.Uid = element.Name; 
    foreach (UIElement child in this.Children) 
    { 
     if (child.Uid == element.Uid) 
     { 
      alreadyExist = true; 
      this.BringToFront(child); 
     } 
    } 
    if (!alreadyExist) 
    { 
     this.Children.Add(element); 
     this.UpdateLayout(); 
     double top = (this.ActualHeight - element.ActualHeight)/2; 
     double left = (this.ActualWidth - element.ActualWidth)/2; 
     Canvas.SetLeft(element, left); 
     Canvas.SetTop(element, top); 
    } 
}   
0

제대로 작동하지 않을 수 있습니다. ActualWidth이 설정되기 전에 레이아웃 단계에서 해당 속성이 설정되므로 하위 항목이 추가됩니다.

여기에 귀하의 목표에 따라, 대신 MeasureOverrideArrangeOverride을 무시하는 것이 좋습니다, 대신 서브 클래 싱 Canvasmaking a custom layout panel.

+0

에 추가 방법을 추가하지만, 당신이 당신의 자신의 패널 클래스를 만드는 경우가 크기 –

+0

@KishoreJangid을 받아 들일 내가 링크 된 문서로,이 방법에 추가 된 아이를 얻는 방법 보여 주었다, 당신은 당신의'InternalChildren'을 언제든지 얻을 수 있습니다 ... http://msdn.microsoft.com/en-us/library/system.windows.controls.panel.internalchildren.aspx –

+0

어떻게 추가할까요? 내 이전 드래그 캔버스 –

관련 문제