我在页面中有几个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>
嗯,问题是网格本身不想拉伸以填充为其分配的空间,而且更多的网格也不会响应页面大小事件。
有关如何解决问题的任何想法?
答案 0 :(得分:1)
如果您的Grid
在StackPanel
范围内且StackPanel
没有HorizontalAlignment="Stretch"
(即在不增长的方向上),那么堆叠面板将适合其孩子。
这会使HorizontalAlignment="Stretch"
中的Grid
无效,因为它只能延伸到其直接父级(StackPanel
)。它是StackPanel
的事实意味着VerticalAlignment="Stretch"
在内部网格上什么都不做。
如果您确实需要内部StackPanel
(没有一个孩子只有一个点),那么也要添加HorizontalAlignment="Stretch"
。这对垂直伸展没有任何作用。
我个人只会转储内部StackPanel
周围的Grid
,因为它没有添加任何值。