如何在Silverlight 4中设置数据网格的高度

时间:2011-09-26 19:37:36

标签: c# silverlight silverlight-4.0

我在页面中有几个DataGrids,每个DataGrid通过以下布局/标记定位:

<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 :(得分:1)

Derek Beattie的评论是正确的。

如果您的GridStackPanel范围内且StackPanel没有HorizontalAlignment="Stretch"(即在不增长的方向上),那么堆叠面板将适合其孩子。

这会使HorizontalAlignment="Stretch"中的Grid无效,因为它只能延伸到其直接父级(StackPanel)。它是StackPanel的事实意味着VerticalAlignment="Stretch"在内部网格上什么都不做。

如果您确实需要内部StackPanel(没有一个孩子只有一个点),那么也要添加HorizontalAlignment="Stretch"。这对垂直伸展没有任何作用。

我个人只会转储内部StackPanel周围的Grid,因为它没有添加任何值。