在WPF中重新创建WinForms布局

时间:2012-02-21 13:38:01

标签: wpf winforms layout

我刚刚继承了一个旧的WinForms应用程序,其UI布局如下:

form layout

我的任务是更新有关该软件的一些内容,其中一项是将其移植到WPF,我之前没有使用过。我还被告知新的WPF UI必须与现有的UI布局完全相同,所以我试图弄清楚如何在WPF中创建该布局。我需要一个横跨窗口顶部的工具栏,它拉伸固定大小窗口的整个宽度。我可以在默认网格中执行此操作,还是需要dockpanel来执行此操作?另外,我假设我会使用一个包含2列和3行的网格来布局六个组框?

3 个答案:

答案 0 :(得分:2)

DockPanel也可以使用Grid完成任何操作 - DockPanel只是一种捷径。所以,是的,您可以使用默认的Grid完成所有这些。

至于如何进行布局:这取决于你想要调整大小的方式。调整大小时,一切都保持成比例吗?如果是这样,一个Grid有三列(以及ColumnDefinition s的百分比大小)就可以了。您实际上需要四个行,但不是三个 - RowDefinition的第一个ToolBar(使用ColumnSpan="3")并且需要{{1所以它使用Height="Auto"的默认大小;剩余的行将是百分比大小。

试试看,看看它是否适合你。如果调整大小需要比仅比例更复杂,那么以不同的大小发布窗口的第二个屏幕截图,我们可以尝试进一步帮助您。

答案 1 :(得分:1)

我个人会在菜单/内容区域使用DockPanel,然后在内容区域使用网格来定义GroupBoxes

<DockPanel>
    <Grid x:Name="MenuRegion" DockPanel.Dock="Top" />
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="*" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="2*" />
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
    </Grid>

    <Grid Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" />
    <Grid Grid.Row="0" Grid.Column="2" />

    <Grid Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" />
    <Grid Grid.Row="1" Grid.Column="2" />

    <Grid Grid.Row="2" Grid.Column="0" />
    <Grid Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="2" />
</DockPanel>

当然,您也可以将菜单区域设置为网格的一部分并将其设置为跨越所有行,但我个人喜欢将它们分开。

答案 2 :(得分:0)

网格有3行(菜单一个)。由于行中的间距不均匀,因此主网格上只有一列。然后网格中的网格为两列间距。