如何定位GroupBox,DataGrid和菜单

时间:2016-02-26 13:14:10

标签: c# wpf xaml datagrid

我正在努力将GroupBox,DataGrid和菜单从上到下定位。 所以对于第一种方法,我使用了StackPanel(伪XAML代码):

<StackPanel>
    <GroupBox/>
    <DataGrid/>
    <Menu/>
</StackPanel>

问题在于我希望DataGrid填充Groupbox和Menu之间的其余空间,并且它会一直显示: enter image description here

我尝试使用DockPanel:

<DockPanel>
   <GroupBox DockPanel.Dock = "Top"/>
   <DataGrid/>
   <Menu DockPanel.Dock = "Bottom"/>
</DockPanel>

它可以很好地拉伸DataGrid但菜单定位不正确 enter image description here

同样在这种情况下,DataGrid在编译后崩溃 enter image description here

我该怎么做才能正确显示元素?

2 个答案:

答案 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>

enter image description here

希望这有帮助。