내보내기(0) 인쇄
모두 확장
이 문서는 수동으로 번역한 것입니다. 원본 텍스트를 보려면 포인터를 문서의 문장 위로 올리십시오.
번역
원본

UIElement.DesiredSize 속성

레이아웃 프로세스의 측정 처리 단계에서 이 UIElement가 계산한 크기를 가져옵니다.

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

public Size DesiredSize { get; }

속성 값

형식: System.Windows.Size
레이아웃 프로세스의 측정 처리 단계에서 이 UIElement가 계산한 크기입니다.

DesiredSize 값은 Measure 호출의 일부로 레이아웃 시스템에서 설정됩니다.

DesiredSize 값은 특히 정렬 처리 단계에서 레이아웃 재정의 동작을 구현하는 경우에 유용합니다. 시나리오에 따라 레이아웃 논리에서 DesiredSize를 그대로 적용하는 경우도 있고, DesiredSize에 대해 제약 조건이 적용될 수도 있습니다. 이러한 제약 조건으로 인해 레이아웃의 부모 또는 자식의 다른 특성이 변경될 수도 있습니다. 예를 들어 스크롤 가능한 영역을 지원하는 컨트롤(이미 스크롤 가능한 영역을 활성화한 상태인 컨트롤에서는 파생할 수 없음)은 사용 가능한 크기를 DesiredSize와 비교할 수 있습니다. 그런 다음 이 컨트롤은 해당 컨트롤에 대해 UI에 스크롤 막대를 사용하도록 설정한 내부 상태를 설정할 수 있습니다. 특정 레이아웃 시나리오에서는 DesiredSize를 무시할 수도 있습니다.

일반적으로 레이아웃 측정 처리 단계의 일부로 코드를 통해 동일한 요소에서 Measure가 호출되었거나 UpdateLayout과 같이 전체 레이아웃 처리 단계를 시작하는 메서드가 호출된 컨텍스트 외에는 DesiredSize 값을 가져오지 않습니다. 이러한 경우가 아니면 DesiredSize에 포함된 값이 적절하다고 확신할 수 없습니다.

다음 예제에서는 DesiredSizeArrangeOverride 구현에 대해 자식 반복의 일부로 쿼리합니다.


// 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에서 지원되는 운영 체제 및 브라우저에 대한 자세한 내용은 지원되는 운영 체제 및 브라우저을 참조하십시오.

커뮤니티 추가 항목

추가
Microsoft는 MSDN 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 진행하고 있습니다. 참여하도록 선택하시면 MSDN 웹 사이트에서 나가실 때 온라인 설문 조사가 표시됩니다.

참여하시겠습니까?
표시:
© 2015 Microsoft