Я создаю пользовательский интерфейс в WPF, у меня есть куча функциональных областей, и я использую Grid для его организации.
Теперь сетка, которую я хочу, неравномерна, так как в некоторой функциональной области будет отображаться несколько ячеек в Grid. Мне было интересно, что лучше всего в решении этого. Должен ли я создать одну сетку, а затем для каждой функциональной области, чтобы она охватывала несколько ячеек, или я должен разбить ее на несколько вложенных сеток.
На этом изображении самая левая панель (панели, разделенные серой полосой) - это то, что я хочу. Средняя панель показывает одну сетку, где синие линии перекрываются функциональной областью. Самая правая панель показывает, как я могу это сделать с вложенными сетками. Вы можете видеть, что зеленая сетка имеет один горизонтальный раскол. В нижней ячейке находится желтая сетка с вертикальным расщеплением. В боковой части левая ячейка представляет собой красную сетку с снова горизонтальным расколом. Сетки 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>
Обновление: я должен признать, что теперь, когда я написал код для обоих подходов, решение "span" выглядит намного лучше.