У меня есть обертка, которая действует как контейнер для группы элементов управления, определенной как
<WrapPanel Orientation="Horizontal">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Label Grid.Row="0">test1</Label>
<ComboBox Grid.Row="1" MinWidth="60"></ComboBox>
<ComboBox Grid.Row="2" MinWidth="60"></ComboBox>
</Grid>
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Label Grid.Row="0">test1</Label>
<TextBox Grid.Row="1" MinWidth="60"></TextBox>
<TextBox Grid.Row="2" MinWidth="60"></TextBox>
</Grid>
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Label Grid.Row="0">test1</Label>
<ComboBox Grid.Row="1" MinWidth="60"></ComboBox>
<ComboBox Grid.Row="2" MinWidth="60"></ComboBox>
</Grid>
</WrapPanel>
Так что в основном она охватывает несколько сеток, каждая из которых имеет 3 строки, и каждая ячейка в сетке имеет элемент управления.Я хочу, чтобы у пользователя была возможность «транспонировать» этот макет так, чтобы оберточная панель теперь имела вертикальную ориентацию, а сетка теперь была сеткой из 3 столбцов.Так что, если сделать это вручную, xaml будет выглядеть так:
<WrapPanel Orientation="Vertical">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Label Grid.Column="0">test1</Label>
<ComboBox Grid.Column="1" MinWidth="60"></ComboBox>
<ComboBox Grid.Column="2" MinWidth="60"></ComboBox>
</Grid>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Label Grid.Column="0">test1</Label>
<TextBox Grid.Column="1" MinWidth="60"></TextBox>
<TextBox Grid.Column="2" MinWidth="60"></TextBox>
</Grid>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Label Grid.Column="0">test1</Label>
<ComboBox Grid.Column="1" MinWidth="60"></ComboBox>
<ComboBox Grid.Column="2" MinWidth="60"></ComboBox>
</Grid>
</WrapPanel>
- Каков наилучший способ добиться этого?
- Есть ли способ сделать это и избежать кода позади?1011 *