Как реализовать групповой блок WPF, который охватывает два столбца? - PullRequest
0 голосов
/ 24 июня 2010

Вот макет, который я хочу:

Сетка с 2 столбцами, 2 ряда

Строка 1 должна содержать групповое поле, охватывающее оба столбца. Строка 2, столбец 1 будет содержать групповое поле Строка 2, столбец 2 будет содержать еще одно групповое поле.

В групповом блоке строки 1 я хочу, чтобы на левой стороне был набор меток / комбинированных блоков. На правой стороне будет стек ярлыков / флажков. В групповом поле Строка 2 / Столбец 1 я хочу добавить больше меток / комбинированных блоков, которые должны совпадать с метками / комбинированными списками первой строки. В групповом поле Строка 2 / Столбец 2 мне нужно больше меток / флажков, которые соответствуют меткам / флажкам первой строки.

Вот что у меня есть. У меня проблема в том, что пары метка / комбинированное поле в групповом блоке строки 1 хотят охватить весь групповой блок. Но я явно устанавливаю row = 0, column = 0 для внутренней сетки, которая содержит метки / комбинированные блоки.

Простите, если это не скомпилируется, поскольку я печатаю на распечатке на компьютере без Studio.

<Grid>
   <Grid.RowDefinitions>
      <RowDefinition/>
      <RowDefinition/>      
   </Grid.RowDefinitions>
   <Grid.ColumnDefinitions>
      <ColumnDefinition/>
      <ColumnDefinition/>
   <Grid.ColumnDefinitions>
   <GroupBox Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2">
      <GroupBox.Header>
         <Label Content="Device Configuration"></Label>
      </GroupBox.Header>
      <Grid Grid.Row="0" Column="0">
         <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition/>      
            <RowDefinition/>      
         </Grid.RowDefinitions>
         <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
         <Grid.ColumnDefinitions>

         <Label Grid.Column="0" Grid.Row="0" Content="Label 1"></Label>
         <ComboBox Grid.Column="1" Grid.Row="0"></ComboBox>

         <Label Grid.Column="0" Grid.Row="1" Content="Label 2"></Label>
         <ComboBox Grid.Column="1" Grid.Row="1"></ComboBox>

         <Label Grid.Column="0" Grid.Row="2" Content="Label 3"></Label>
         <ComboBox Grid.Column="1" Grid.Row="2"></ComboBox>
      </Grid>
   </GroupBox>
</Grid>

Ответы [ 2 ]

1 голос
/ 24 июня 2010

Когда элемент управления больше не является прямым потомком сетки, он не имеет представления о том, что находится внутри панели «Сетка», и не форматируется как таковой.Итак, поскольку на пути есть GroupBox, он не является прямым потомком Grid.

Если вы хотите, чтобы содержимое GroupBox выглядело как часть самой верхней Grid, выВы должны воспроизвести эту структуру Grid (2 столбца в GroupBox) самостоятельно.

Visual Studio не выдает никаких ошибок при установке Grid. * на элементы, даже если родительский объект не является Grid.

0 голосов
/ 24 июня 2010

Вы рядом. Я не знаю, была ли эта копия / прошлое сломала ваш код или нет, но вы не закрывали тег Grid.ColumnDefinitions. Вам также может понадобиться воспроизвести первую внешнюю сетку в верхнем групповом окне, если вы хотите, чтобы столбцы выстроились в ряд.

<Grid>
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>

        <GroupBox Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2">
            <GroupBox.Header>
                <Label Content="Device Configuration"></Label>
            </GroupBox.Header>
            <Grid Grid.Row="0" Column="0">
                <Grid.RowDefinitions>
                    <RowDefinition/>
                    <RowDefinition/>
                    <RowDefinition/>
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition/>
                    <ColumnDefinition/>
                </Grid.ColumnDefinitions>

                <Label Grid.Column="0" Grid.Row="0" Content="Label 1"></Label>
                <ComboBox Grid.Column="1" Grid.Row="0"></ComboBox>

                <Label Grid.Column="0" Grid.Row="1" Content="Label 2"></Label>
                <ComboBox Grid.Column="1" Grid.Row="1"></ComboBox>

                <Label Grid.Column="0" Grid.Row="2" Content="Label 3"></Label>
                <ComboBox Grid.Column="1" Grid.Row="2"></ComboBox>
            </Grid>
        </GroupBox>

        <GroupBox Grid.Row="1" Grid.Column="0">
            <TextBlock>Row 1 Column 0</TextBlock>
        </GroupBox>

        <GroupBox Grid.Row="1" Grid.Column="1">
            <TextBlock>Row 1 Column 1</TextBlock>
        </GroupBox>
    </Grid>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...