2013-07-13 1 views

답변

0

한계 검사를 관리 할 요소가 없지만 컨테이너 요소에 가장 적합한 옵션은 Canvas입니다. 이 요소는 상대적 위치 지정 (Margin, HorizontalAlignmentVerticalAlignment을 사용)보다는 절대 위치 지정 (예 : Canvas.Left,)을 사용합니다. 이렇게하면 끌어다 놓기 (자식 요소의 위치를 ​​다시 잡는 데 사용됨)가 훨씬 수월합니다.

Rectangle은 부모 가장자리 인 Canvas을 수동으로 통과해야하지만 쉽습니다. 그것은 같이 보일 것입니다 : xoffset이가 MouseMove 이벤트와 Rectangle의 원래 위치의 MouseEventArgs 계산할 수있다

private void DoMoveX(double left, double xOffset) 
{ 
    if (left + xOffset < 0) 
     Canvas.SetLeft(this, 0); 
    else if (left + xOffset > ParentCanvas.ActualWidth - this.ActualWidth) 
     Canvas.SetLeft(this, ParentCanvas.ActualWidth - this.ActualWidth); 
    else 
     Canvas.SetLeft(this, GetSnapValue(left + xOffset)); 
} 

. 위의 발췌 부분에서 this이 하위 요소 (ParentCanvas에 대한 참조가 있음)이지만 쉽게 반전하여 Canvas 또는 Window 또는 무언가가 운동을 관리하도록 할 수 있습니다.

관련 문제