私は次の XAML を持っています:-
<Grid Width="400" Height="400">
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Text="Heading" />
<ListBox Grid.Row="1" ItemsSource="{Binding Foo}"
Margin="0,12,0,12" />
<Button Grid.Row="2" Content="Button"
VerticalAlignment="Top" HorizontalAlignment="Left" />
</Grid>
これは、見出し、リストボックス、およびリストボックスのすぐ下にボタンを表示するだけです。リストボックス内のアイテムの数が増えると、ボタンが押し下げられますが、リストボックスは拡大し続け、最終的にはウィンドウの下部から消え、ボタンも一緒に消えます。
代わりに、ボタンがウィンドウの下部に達するまでリストボックスを拡大したいと思います。この時点で、リストボックスはそれ以上拡大せず、代わりにスクロールバーを表示してリストをスクロールします。私は何が欠けていますか?
編集:
私は次のことを思いついたところですが、これはうまくいくようです。しかし、よりエレガントなソリューションがあるかどうかわかりませんか?
<Grid Width="400" Height="400">
<Grid.RowDefinitions >
<RowDefinition Height="auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Text="Heading" />
<DockPanel Grid.Row="1" LastChildFill="True" VerticalAlignment="Top">
<Button DockPanel.Dock="Bottom" Content="Button"
VerticalAlignment="Top" HorizontalAlignment="Left" />
<ScrollViewer VerticalScrollBarVisibility="Auto" Margin="0,12,0,12">
<ListBox ItemsSource="{Binding Foo}" />
</ScrollViewer>
</DockPanel>
</Grid>