2011-07-30 4 views
2

그냥 fyi, WPF를 처음 사용합니다.WPF 레이아웃, 이것을 정리할 수 있습니까?

WPF 앱에 사이드 바를 만들고 둥근 모서리를 만들고 싶습니다. 내가 배운 것은 당신이 그리드에 붙일 수있는 자산이 아닙니다. 또한, 나는 국경 통제에 textblocks를 넣으려고했는데, 내가 돌아온 오류 메시지는 "자식은 한 번만 설정할 수있다"고 말했다.

아래 코드는 지금까지 가지고 있지만, 부모 Grid에 중첩되어있는 경계에 중첩되어있는 격자에 중첩되어있는 stackpanel에 내 textblocks를 중첩하지 않아도됩니다. 이걸 정리할 방법이 있니?

<Grid Style="{StaticResource SideBar}"> 
    <Border Style="{StaticResource RoundedSidebar}"> 
     <Grid> 
      <StackPanel Orientation="Vertical" VerticalAlignment="Top"> 
       <TextBlock /> 
       <TextBlock /> 
       <TextBlock /> 
      </StackPanel> 
     </Grid> 
    </Border> 
</Grid> 

모든 의견은 크게 감상 할 수있다 (가능한 한 조직으로, 걱정, 다시 가지 새로운이, 그리고 내 XAML을 얻을 찾고하지하지 않을 경우).

감사

답변

2

당신이 outter는 그리드 요소의 경계 이외의 다른 요소가없는 경우 우선 그것을 제거 할 수 있습니다. 또한

, 당신은 지금 당신의 테두리가 그 StackPanel의 국경 내부 그리드의 유일한 요소 인으로, 당신은뿐만 아니라 그 그리드를 제거 할 수있는 방법 ... 마지막으로

, 당신은 필요하지 않습니다 Orientation 속성은 Vertical가 기본값이기 때문에 StackPanel 내에 TextBlocks 및 기타 요소를 쌓아 두는 것이 완벽하게 정상이므로이 속성은 결국 목적입니다 ...

+0

고마워,이 훌륭한 일을 ... 그것은 훨씬 청소기입니다 – kdub

1

정리가별로 없습니다. 여기에 내가 무엇을 할 것입니다 :

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*"/> 
     <ColumnDefinition Width="auto"/> 
    </Grid.ColumnDefinitions> 
    <Border Style="{StaticResource RoundedSidebar}" Grid.Column="1"> 
     <StackPanel Orientation="Vertical" VerticalAlignment="Top"> 
      <TextBlock /> 
      <TextBlock /> 
      <TextBlock /> 
     </StackPanel> 
    </Border> 
</Grid> 
+0

여분의 열은 왜? – kenwarner

+0

사이드 바를 얼마나 쉽게 만들 수 있는지 보여줄 수있는 여분의 칼럼이 있습니다. 'Border'내부의 'Grid'는 유일한 (마이크로) 최적화 인 것처럼 보입니다. +1 – xlk

+0

사실, 당신이 가지고 있던 외부 그리드가 필요하지 않았기 때문에 그것을 메인 그리드로 바꿨습니다. –

관련 문제