내보내기(0) 인쇄
모두 확장
정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

UIElement.Arrange 메서드

2013-12-13

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

Namespace:  System.Windows
어셈블리:  System.Windows(System.Windows.dll)

‘선언
Public Sub Arrange ( _
	finalRect As Rect _
)

매개 변수

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

예외조건
InvalidOperationException

finalRectDouble.NaN 또는 무한대 값이 포함된 경우. 설명을 참조하세요.

사용자 지정 레이아웃 작업을 수행하는 재정의 메서드 컨텍스트 밖에서는 Measure 또는 Arrange를 호출할 이유가 없습니다. Windows Phone 레이아웃은 런타임에 감지된 개체 트리 및 레이아웃 관련 속성 변경에 따라 자율적으로 동작합니다. 자세한 내용은 Windows Phone의 레이아웃을 참조하세요.

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

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

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


'Second arrange all children and return final size of panel 
Protected Overloads Overrides Function ArrangeOverride(ByVal finalSize As Size) As Size
    'Get the collection of children 
    Dim mychildren As UIElementCollection = Children

    'Get total number of children 
    Dim count As Integer = mychildren.Count

    'Arrange children 
    'We're only allowing 9 children in this panel. More children will get a 0x0 layout slot. 
    Dim i As Integer
    For i = 0 To 8

        'Get (left, top) origin point for the element in the 3x3 block 
        Dim cellOrigin As Point = 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. 
        Dim dw As Double = mychildren(i).DesiredSize.Width
        Dim dh As Double = mychildren(i).DesiredSize.Height


        mychildren(i).Arrange(New Rect(cellOrigin.X, cellOrigin.Y, dw, dh))
    Next
    For i = 9 To count - 1

        'Give the remaining children a 0x0 layout slot 
        mychildren(i).Arrange(New Rect(0, 0, 0, 0))
    Next


    'Return final size of the panel 
    Return New Size(300, 300)
End Function

'Calculate point origin of the Block you are in 
Protected Function GetOrigin(ByVal blockNum As Integer, ByVal blocksPerRow As Integer, ByVal itemSize As Size) As Point
    'Get row number (zero-based) 
    Dim row As Integer = CInt(Math.Floor(blockNum / blocksPerRow))

    'Get column number (zero-based) 
    Dim column As Integer = blockNum - blocksPerRow * row

    'Calculate origin 
    Dim origin As New Point(itemSize.Width * column, itemSize.Height * row)
    Return origin

End Function


Windows Phone OS

지원되는 버전: 8.0, 7.1, 7.0

Windows Phone

표시:
© 2015 Microsoft