2010-03-28 59 views
12

我在WPF中制作一个用户界面,我有一堆功能区域,我使用网格来组织它。什么是WPF更好的用户界面布局,使用一个网格或嵌套的网格

现在我想要的网格不是统一的,因为某些功能区域将跨越网格中的多个单元格。我想知道解决这个问题的最佳做法是什么。我应该创建一个网格,然后为每个功能区域设置它跨越多个单元格,还是应该将其分割为多个嵌套网格。

在这张图片中,最左边的面板(用灰色条分隔的面板)就是我想要的。中间面板显示一个网格,其中蓝色线与功能区重叠。最右边的面板显示了我可以如何使用嵌套网格来完成它。你可以看到绿色的网格有一个水平分割。在底部的单元格是一个垂直分割的黄色网格。在左边的单元格是红色格子,再次是水平分割。 Grids http://www.freeimagehosting.net/uploads/08f2711bae.jpg

我只是想知道什么是最佳实践,中间或右侧面板。

更新:只是为了澄清,更多的 '代码为本' 的例子:

中间面板

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="25" /> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="*" /> 
    </Grid.RowDefinitions> 

    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="200" /> 
     <ColumnDefinition Width="*" /> 
    </Grid.ColumnDefinitions> 

    <Menu   Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" /> 
    <uc:Info  Grid.Row="1" Grid.Column="0" /> 
    <uc:Control Grid.Row="2" Grid.Column="0" /> 
    <uc:Simulation Grid.Row="1" Grid.Column="1" Grid.RowSpan="2" /> 
</Grid> 

右侧面板:

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="25" /> 
     <RowDefinition Height="*" /> 
    </Grid.RowDefinitions> 

    <Menu Grid.Row="0"/> 

    <Grid Grid.Row="1"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="200" /> 
      <ColumnDefinition Width="*" /> 
     </Grid.ColumnDefinitions> 

     <Grid Grid.Column="0"> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="*" /> 
       <RowDefinition Height="*" /> 
      </Grid.RowDefinitions> 

      <uc:Info Grid.Row="0" /> 
      <uc:Control Grid.Row="1" /> 
     </Grid> 

     <uc:Simulation Grid.Column="1" /> 
    </Grid> 
</Grid> 

更新:我不得不承认,现在我已经写出了两种方法的代码,“跨度”解决方案看起来好多了。

回答

3

我个人会用你的中间布局使用一个单独的网格,列和行跨度来构造UI的整体布局,然后在每个部分中放置一个面板来包含实际的控件(以及可能的更详细的布局)。

1

恐怕我无法将您的解决方案与不同网格和子网格中的颜色区分开来。

我可以建议的是为每个功能区域创建一个UserControl,然后有一个网格来安排这些区域。

然后,每个UserControl都可以自由创建自己的布局(使用另一个网格或更简单的StackPanel或其他),并负责在其自己的区域中显示数据子集/处理用户事件。

然后,外层网格是涉及多个区域(例如区域之间的事件转发)的仲裁器。

2

我会建议创建一个主网格划分为功能区域,然后在这些区域创建单独的网格/堆栈面板/等。 您可能不知道每个功能区域的要求,因此您可以自由排列元素并在布局之间切换。当你把所有东西放在一个网格中时,会出现一个“难以管理”的布局。

1

坦率地说,我会去为一个dockpanel或类似的顶级组成,和网格为低级