2011-09-26 53 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作为层叠*,因为他们说:)根据您目前的设计,你并不需要一个边界或者,只是网格本身。你是否有理由将它嵌套在另一个控件中? –

相关问题