0

これが私が持っているコードで、スタック、エキスパンダー、およびその中のオブジェクトを完全にロールアップして、その下のすべてのオブジェクトをプッシュして、上部のスタックとオブジェクトをロールアップした後に残ったスペースを占有する方法を考えました。私の現在のコードは以下の通りです:

<Grid>
 <StackPanel Margin="8,8,0,0" VerticalAlignment="Top" Height="225">
  <Expander Header="Expander">
   <Grid Height="201">
    <ListBox HorizontalAlignment="Left" Margin="103,63,0,38" Width="100">
     <ListBoxItem Content="Brown"/>
     <ListBoxItem Content="Red"/>
     <ListBoxItem Content="Green"/>
     <ListBoxItem Content="Yellow"/>
    </ListBox>
   </Grid>
  </Expander>
 </StackPanel>
 <StackPanel Margin="0,0,0,8" VerticalAlignment="Bottom" Height="221">
  <Expander Header="Expander">
   <Grid Height="194">
    <ListBox Margin="177,21,213,73">
     <ListBoxItem Content="Gold"/>
     <ListBoxItem Content="Silver"/>
     <ListBoxItem Content="Platinum"/>
     <ListBoxItem Content="Palladium"/>
    </ListBox>
   </Grid>
  </Expander>
 </StackPanel>

</Grid>
4

1 に答える 1

1

あなたが何をしたいのかを正しく理解していれば、グリッドで星のサイズ変更を使用してこれを行うことができます。星のサイズ変更は、残りの使用可能なすべてのサイズを使用するようにグリッドに指示します (複数の行/列が星のサイズである場合は、比例して分割されます)。したがって:

<Grid>
  <Grid.RowDefinitions>
    <RowDefinition Height="Auto" />
    <RowDefinition Height="*" />
  </Grid.RowDefinitions>
  <StackPanel Margin="8,8,0,0" VerticalAlignment="Top" Height="225" Grid.Row="0">
    <!-- first Expander here -->
  </StackPanel>
  <StackPanel Margin="0,0,0,8" VerticalAlignment="Bottom" Grid.Row="1">
    <!-- second Expander here -->
  </StackPanel>
</Grid>

Grid.Row 添付プロパティに注意してください。

最初の StackPanel の可視性を Collapsed に設定すると、高さがなくなります。そのため、グリッドの最初の行がゼロの高さに折りたたまれます。つまり、グリッドの高さ全体が 2 番目の StackPanel とそのコンテンツに割り当てられます。

これはあなたが求めている結果ですか?質問を誤解している可能性があります...もしそうなら、コメントを残してください。更新または削除します。

于 2010-03-11T03:01:46.343 に答える