2013-07-25 3 views
1

특정 레이아웃을 구현하려고합니다.Stackpanel에서 자식의 너비를 제어

세로로 쌓아 올리려는 요소가 두 개 있습니다. 서로 밀접하게 따라야합니다. 저는 현재 Stackpanel을 사용하여 그것을 달성하려고합니다.

문제는 첫 번째 요소가 제한된 너비를 가지며 다른 요소가 StackPanel에서 사용 가능한 모든 너비를 사용하도록하려는 것입니다. 이상적으로, 첫 번째 요소의 폭이 StackPanel을 포함하는 격자의 네 열의 너비와 같습니다. 여기에 제 코드가 있습니다.

<Grid> 
<!-- Colums and Rows definition go here --> 
<StackPanel Grid.Column="0" Grid.ColumnSpan="4" Grid.Row="3" Grid.RowSpan="8"> 
    //The first element 
    <Viewbox Name="viewbox_choix" Margin="160,0,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Grid.Column="0" Grid.ColumnSpan="4" Grid.Row="3" Grid.RowSpan="4"> 
    //The second element 
    <StackPanel Grid.Column="0" Grid.ColumnSpan="5"> 
     <Border></Border> 
     etc... 
    </StackPanel> 
</StackPanel> 
</Grid> 

그리드 속성은 스택 패널의 상위 그리드를 참조합니다. 그러나 Grid.Column과 Grid.ColumnSpans는 StackPanel 내부에서 사용하려고 할 때 효과가없는 것으로 보입니다.

그 코드의 문제는

은 아무도 도와 줄 수 ... 첫 번째 요소는 StackPanel의 모든 폭을 사용하지만 그게 내가 원하는되지 않는 것입니다? 정확히 WPF를 배우는 중이며 바인딩이 어떻게 작동하는지 정확히 알지 못합니다 ...

답변

1

WPF에서는 StackPanelGrid처럼 작동하지 않습니다. 최대 너비가 없습니다 ... 그것은 행복하게 콘텐츠가 오른쪽 밖으로 사라지게합니다. 당신이 자동 크기 조절을 원하는 경우에, 다만`그리드

UPDATE >>>Grid 클래스에서

으로 StackPanel의 교체, IsSharedSizeScope라는 연결된 속성이있다. 이것을 부모 Grid에 추가하고 true로 설정하십시오. 그런 다음 RowDefinitions에서 필요한 열에 SharedSizeGroup 속성을 추가 할 수 있습니다.

이러한 예는 당신을 도울 수 있습니다

Grid's SharedSizeGroup and * sizing (SO 게시물)

Grid.IsSharedSizeScope Attached Property (MSDN)

당신은 약간의 실험을해야 할 수도 있습니다,하지만 당신은 사용하여 원하는 효과를 얻을 수 있어야합니다 이러한 속성.

+0

대단히 감사합니다. 시험해보고 알려 드리겠습니다. – reddy

+0

글쎄, 아직도 문제가 있습니다. 행의 최대 너비를 부모 그리드의 4 열 너비와 동일하게 설정하려면 어떻게해야합니까? 내 질문은 어떻게 부모 그리드를 참조 할 수 있습니까? – reddy

+0

고마워, 내가 시도해! – reddy

관련 문제