문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문

UIElement.Arrange 메서드

자식 개체 요소를 배치하고 UIElement의 크기를 결정합니다. 자식 요소에 대한 사용자 지정 레이아웃을 구현하는 부모 개체는 이 메서드를 자체 레이아웃 재정의 구현에서 호출하여 재귀적 레이아웃 업데이트를 형성합니다.

네임스페이스:  System.Windows
어셈블리:  System.Windows(System.Windows.dll)

public void Arrange(
	Rect finalRect
)

매개 변수

finalRect
형식: System.Windows.Rect
Rect 값으로 제공되는, 레이아웃의 자식에 대해 부모가 계산하는 최종 크기입니다.

예외상황
InvalidOperationException

finalRectDouble.NaN 또는 무한대 값이 포함된 경우. 설명 부분을 참조하십시오.

사용자 지정 레이아웃 작업을 수행하는 재정의 메서드의 컨텍스트를 벗어나는 Measure 또는 Arrange를 호출할 이유가 없습니다. Silverlight 레이아웃은 런타임에 개체 트리 및 레이아웃 관련 속성의 변경 검색을 기반으로 자율적으로 작동합니다. 자세한 내용은 Silverlight 레이아웃 시스템을 참조하십시오.

Measure 에 전달되는 finalRectRect 값으로 Double.NaN 값을 사용할 수 없습니다. 또한 finalRectRect 값으로 무한대 값을 사용할 수 없습니다.

일반적으로 Arrange를 호출하면 각 요소에 대한 DesiredSizeheightwidth 값을 사용하는 finalRect가 통합됩니다. 요소가 레이아웃 부모에 수용할 수 없는 DesiredSize를 포함하거나 모든 자식 요소 DesiredSize 값의 합계를 수용 또는 정렬할 수 없는 경우 이 일반 동작에 대한 예외가 필요할 수도 있습니다. 이 경우 자식 요소 콘텐츠가 클리핑되거나, 크기 조정되거나 스크롤 영역에 배치될 수 있습니다. 이러한 작업은 모두 레이아웃 부모 컨테이너에서 사용할 수 있도록 설정된 특정 기능에 따라 달라집니다.

다음 예제에서는 ArrangeOverride 구현 내에서 Arrange를 사용하는 방법을 보여 줍니다.


// Second arrange all children and return final size of panel
protected override Size ArrangeOverride(Size finalSize)
{
    // Get the collection of children
    UIElementCollection mychildren = Children;

    // Get total number of children
    int count = mychildren.Count;

    // Arrange children
    // We're only allowing 9 children in this panel.  More children will get a 0x0 layout slot.
    int i;
    for (i = 0; i < 9; i++)
    {

        // Get (left, top) origin point for the element in the 3x3 block
        Point cellOrigin = GetOrigin(i, 3, new Size(100, 100));

        // Arrange child
        // Get desired height and width. This will not be larger than 100x100 as set in MeasureOverride.
        double dw = mychildren[i].DesiredSize.Width;
        double dh = mychildren[i].DesiredSize.Height;

        mychildren[i].Arrange(new Rect(cellOrigin.X, cellOrigin.Y, dw, dh));

    }

    // Give the remaining children a 0x0 layout slot
    for (i = 9; i < count; i++)
    {
        mychildren[i].Arrange(new Rect(0, 0, 0, 0));
    }


    // Return final size of the panel
    return new Size(300, 300);
}

// Calculate point origin of the Block you are in
protected Point GetOrigin(int blockNum, int blocksPerRow, Size itemSize)
{
    // Get row number (zero-based)
    int row = (int)Math.Floor(blockNum / blocksPerRow);

    // Get column number (zero-based)
    int column = blockNum - blocksPerRow * row;

    // Calculate origin
    Point origin = new Point(itemSize.Width * column, itemSize.Height * row);
    return origin;

}


Silverlight

5, 4, 3에서 지원

Windows Phone용 Silverlight

Windows Phone OS 7.1, Windows Phone OS 7.0에서 지원

Silverlight에서 지원되는 운영 체제 및 브라우저에 대한 자세한 내용은 지원되는 운영 체제 및 브라우저을 참조하십시오.

커뮤니티 추가 항목

추가
표시: