2つの列にまたがるよりもWPFグループボックスを実装するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/3110531

  •  29-09-2019
  •  | 
  •  

質問

これが私が欲しいレイアウトです:

2列、2行のグリッド

行1には、両方の列に及ぶグループボックスが含まれている必要があります。行2、列1にはグループボックスの行2が含まれ、列2には別のグループボックスが含まれます。

行1のグループボックスには、左側にラベル/コンボボックスのスタックが付いています。右側には、ラベル/チェックボックスのスタックがあります。行2/列1のグループボックスには、最初の行のラベル/コンボボックスに沿って、より多くのラベル/コンボボックスが必要です。行2/列2グループボックスには、最初の行のラベル/チェックボックスに合わせたラベル/チェックボックスを追加します。

これが私がこれまでに持っているものです。私が抱えている問題は、行1のグループボックスのラベル/コンボボックスのペアがグループボックス全体に及ぶことを望んでいるということです。ただし、ラベル/コンボボックスを含む内部グリッドの行= 0、列= 0を明示的に設定しています。

スタジオなしでコンピューターのプリントアウトから入力しているので、これがコンパイルされない場合は許してください。

<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列)を自分で再現する必要があります。

Visual Studioは、親がグリッドではない場合でも、グリッドを入力するときにエラーを発しません。*。

他のヒント

あなたは近いです。あなたのコードを破ったのはコピー/過去かどうかはわかりませんが、あなたは閉じていませんでした 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>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top