2011-09-26 52 views
3

我有一對夫婦一個網頁內的DataGrid中的每個數據網格通過以下佈局/標記定位:如何設置一個數據網格的高度在Silverlight 4

<border BorderBrush="Black"> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="30"/> 
      <RowDefinition Height="*"/> 
      <RowDefinition Height="30"/> 
     </Grid.RowDefinitions> 
     <TextBlock x:Name="Title" Grid.Row="0" Grid.Column="0" VerticalAlignment="Center" Margin="6,0,0,0" Content="Panel Title"/> 
     <toolkit:BusyIndicator Grid.Row="1" Grid.Column="0" x:Name="GridLoadingIndicator"> 
      <StackPanel Orientation="Vertical"> 
       <sdk:DataGrid x:name="GVData" 
        VerticalAlignment="Stretch" 
        HorizontalAlignment="Stretch" 
        AutoGenerateColumns="False" 
        HorizontalScrollBarVisibility="Visible" 
        SelectionMode="Single"> 
        <datagrid:DataGridTextColumn Header="Column 1" Binding="{Binding Col1}" />        
        <datagrid:DataGridTextColumn Header="Column 2" Binding="{Binding Col2}" />        
        <datagrid:DataGridTextColumn Header="Column 3" Binding="{Binding Col3}" />        
        <datagrid:DataGridTextColumn Header="Column 4" Binding="{Binding Col4}" />        
        <datagrid:DataGridTextColumn Header="Column 5" Binding="{Binding Col5}" /> 
       </sdk:DataGrid> 
      </StackPanel> 
     </toolkit:BusyIndicator> 
     <StackPanel x:Name="PagerControls" Grid.Row="2" Grid.Column="0" Orientation="Horizontal"> 
      <!-- Pager --> 
     </StackPanel> 
    </Grid> 
</border> 

好了,問題是,網格本身不希望伸展以填充分配給它的空間,並且更多地不會響應頁面大小事件。

關於如何解決該問題的任何想法?

+1

任何原因網格處於堆疊面板? –

+0

我嘗試了一個邊框,它的功能就像一個魅力! – bleepzter

回答

1

Derek Beattie在他的評論中是正確的。

如果您GridStackPanelStackPanel內沒有HorizontalAlignment="Stretch"(即在不長的方向),然後堆疊面板將適合它的孩子。

這會使您的Grid中的HorizontalAlignment="Stretch"空缺,因爲它只能延伸到其直接父級(StackPanel)。這是一個StackPanel,這意味着VerticalAlignment="Stretch"確實在內部網無關。

如果你實際上需要內部StackPanel(沒有點只有一個孩子),然後再添加HorizontalAlignment="Stretch"它。這不會對垂直拉伸做任何事情。

就我個人而言,我只是傾銷StackPanel,圍繞內部Grid,因爲它不增加任何價值。

+0

即使Horizo​​natlAlignment =棧面板上的「拉伸」和VerticalAlignment =「拉伸」,它仍然產生相同的問題。正如@Derek Beattie建議我將堆疊面板改爲邊框,一切都很好。 – bleepzter

+0

* StackPanels作爲層疊*,因爲他們說:)根據您目前的設計,你並不需要一個邊界或者,只是網格本身。你是否有理由將它嵌套在另一個控件中? –

相關問題