0

这是我想要的布局:

2 列 2 行的网格

第 1 行应包含一个跨越两列的组框。第 2 行,第 1 列将包含一个组合框 第 2 行,第 2 列将包含另一个组合框。

在第 1 行的组框中,我希望左侧有一堆标签/组合框。右侧将是一堆标签/复选框。在第 2 行/第 1 列组合框中,我想要更多标签/组合框,这些标签/组合框应与第一行的标签/组合框对齐。在第 2 行/第 2 列组框中,我想要更多与第一行的标签/复选框对齐的标签/复选框。

这是我到目前为止所拥有的。我遇到的问题是第 1 行的组合框中的标签/组合框对想要跨越整个组合框。但是,我为包含标签/组合框的内部网格明确设置行=0,列=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>
4

2 回答 2

1

一旦控件不再是网格的直接后代,它就没有在网格面板中的概念,也不会被格式化。所以,因为有一个 GroupBox,它不是 Grid 的直接后代。

如果您希望 GroupBox 的内容看起来像是最顶层 Grid 的一部分,您必须自己重现该 Grid 结构(GroupBox 中的 2 列)。

将 Grid.* 放在项目上时,Visual Studio 不会给出任何错误,即使父项不是 Grid。

于 2010-06-24T13:56:02.213 回答
0

你很亲密。我不知道是否是副本/过去破坏了您的代码,但您没有关闭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>
于 2010-06-24T13:57:27.100 回答