Я делаю пользовательский интерфейс в WPF, у меня есть несколько функциональных областей, и я использую 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" выглядит намного лучше.