2016-01-18 37 views
0

現在Rectangle的寬度爲0. 如果我將ColumnDefinition設置爲200或者矩形的寬度爲200,那麼我可以看到Rectangle。但與明星它不工作。Stackpanel內部的網格不伸展

我試圖將矩形1和3的寬度設置爲40%寬度,將矩形2設置爲20%。

我的代碼有什麼問題?

 <Grid Grid.Row="1"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="2*"/> 
      <ColumnDefinition Width="1*"/> 
      <ColumnDefinition Width="2*"/> 
     </Grid.ColumnDefinitions> 

     <StackPanel Grid.Column="1" HorizontalAlignment="Stretch" VerticalAlignment="Center" Orientation="Vertical" Margin="0,100,0,0"> 
      <StackPanel HorizontalAlignment="Stretch" Orientation="Horizontal"> 
       <Grid> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="3*"/> 
         <ColumnDefinition Width="4*"/> 
         <ColumnDefinition Width="3*"/> 
        </Grid.ColumnDefinitions> 

        <Rectangle Grid.Column="0" Height="200" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Fill="Beige" StrokeThickness="2" Stroke="Red" /> 
        <Rectangle Grid.Column="1" Height="200" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" /> 
        <Rectangle Grid.Column="2" Height="200" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Fill="Beige" StrokeThickness="2" Stroke="Red" /> 
       </Grid> 
      </StackPanel> 
     </StackPanel> 
    </Grid> 
+0

您有三個沒有寬度的矩形沒有寬度。所有在水平的StackPanel中。你的期望是什麼? – Clemens

+0

你想用這種佈局實現的圖片將有很大幫助。 –

+0

我試圖將矩形1和3的寬度設置爲40%寬度,將矩形2設置爲20%; – beginner

回答

3

爲什麼你需要stackpanels呢?你可以只使用網格。

無論如何,StackPanel不會沿其方向拉伸(即垂直堆棧面板不會垂直拉伸,水平堆棧面板不會水平拉伸)。

例子:

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="100" /> 
     <RowDefinition Height="*" /> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="1*"/> 
     <ColumnDefinition Width="3*"/> 
     <ColumnDefinition Width="1*"/> 
    </Grid.ColumnDefinitions> 
    <Grid 
     Grid.Row="1" 
     Grid.Column="1" 
     Margin="0,100,0,0" 
     Background="Aquamarine" 
     > 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="3*"/> 
      <ColumnDefinition Width="4*"/> 
      <ColumnDefinition Width="3*"/> 
     </Grid.ColumnDefinitions> 

     <Rectangle Grid.Column="0" Height="200" Fill="Beige" StrokeThickness="2" Stroke="Red" /> 
     <Rectangle Grid.Column="1" Height="200"/> 
     <Rectangle Grid.Column="2" Height="200" Fill="Beige" StrokeThickness="2" Stroke="Red" /> 

    </Grid> 
</Grid> 

注意:您不需要爲HorizontalAlignment="Stretch" VerticalAlignment="Stretch"矩形 - 大公默認拉伸。無論如何,指定VerticalAlignment="Stretch"Height="200"都沒有意義。

更新:而在你inital代碼的問題是在這裏:

<StackPanel Orientation="Vertical" ... > 
    <StackPanel Orientation="Horizontal" ...> 
     <Grid> 

網格試圖佔用全部可用空間。什麼地方可用?你有兩個嵌套的堆疊面板:一個不垂直拉伸,另一個不水平拉伸。因此,指定的沒有HeightWidth的網格具有零可用空間。如果您從矩形中刪除Height="200",則可能會看到您的網格爲零。