我在一个页面中有几个 DataGrid,每个 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>
嗯,问题在于网格本身不想拉伸(stretch)以填充分配给它的空间,而且它也不响应页面大小事件。
关于如何解决这个问题有什么想法吗?
最佳答案
Derek Beattie 的评论是正确的。
如果您的 Grid
在 StackPanel
中并且 StackPanel
没有 HorizontalAlignment="Stretch"
(即在不增长的方向)然后堆栈面板将适合它的 child 。
这会使 Grid
中的 HorizontalAlignment="Stretch"
无效,因为它只能拉伸(stretch)到其直接父级(StackPanel
)。它是一个 StackPanel
这一事实意味着 VerticalAlignment="Stretch"
对内部 Grid 不执行任何操作。
如果您确实需要内部 StackPanel
(只有一个 child 没有意义),那么也向其添加 HorizontalAlignment="Stretch"
。这不会对垂直拉伸(stretch)产生任何影响。
就我个人而言,我会丢弃围绕内部 Grid
的 StackPanel
,因为它没有增加任何值(value)。
关于c# - 如何在 Silverlight 4 中设置数据网格的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7560336/