我正在努力将GroupBox,DataGrid和菜单从上到下定位。 所以对于第一种方法,我使用了StackPanel(伪XAML代码):
<StackPanel>
<GroupBox/>
<DataGrid/>
<Menu/>
</StackPanel>
问题在于我希望DataGrid填充Groupbox和Menu之间的其余空间,并且它会一直显示:
我尝试使用DockPanel:
<DockPanel>
<GroupBox DockPanel.Dock = "Top"/>
<DataGrid/>
<Menu DockPanel.Dock = "Bottom"/>
</DockPanel>
我该怎么做才能正确显示元素?
答案 0 :(得分:1)
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="*" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<GroupBox Grid.Row="0" />
<DataGrid Grid.Row="1" />
<Menu Grid.Row="2" />
</Grid>
答案 1 :(得分:1)
这将有效 - 无法真正为您提供正确答案,为什么它会像这样工作,但它与您在使用对接时首先创建哪些组件有关。因此,通过在数据网格上方放置菜单,您的dockpanel可以按照您的描述工作。
如果我误会,请有人纠正我。我自己也在了解这一点。
<DockPanel>
<GroupBox Header="Filter" DockPanel.Dock="Top">
<StackPanel Orientation="Horizontal">
<Label Content="Label 1" />
<Label Content="Label 2" />
</StackPanel>
</GroupBox>
<Menu DockPanel.Dock="Bottom">
<MenuItem Header="Menu 1">
</MenuItem>
<MenuItem Header="Menu 2">
</MenuItem>
</Menu>
<DataGrid>
<DataGrid.Columns>
<DataGridTextColumn Header="Header1" Width="*" />
<DataGridTextColumn Header="Header2" Width="*" />
<DataGridTextColumn Header="Header3" Width="*" />
<DataGridTextColumn Header="Header4" Width="*" />
</DataGrid.Columns>
</DataGrid>
</DockPanel>
希望这有帮助。