XAML布局问题

XAML布局问题,xaml,Xaml,我有以下XAML:- <Grid Width="400" Height="400"> <Grid.RowDefinitions> <RowDefinition Height="auto"/> <RowDefinition Height="auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <TextB

我有以下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>

这只是在列表框的正下方显示标题、列表框和按钮。随着列表框中项目数量的增加,按钮会被按下,但是列表框会不断增加,并最终从窗口底部消失,同时带上按钮

相反,我希望listbox不断增长,直到按钮到达窗口底部。此时,listbox不应该进一步增长,而是显示滚动条来滚动列表。我错过了什么

编辑:

我刚刚提出了以下几点,这似乎起到了作用。但不确定是否有更优雅的解决方案

<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>

您需要将包含
列表框的网格行的高度限制为某个固定高度,以防止它占用它喜欢的任何垂直高度。我不需要测试IDE,但您可能还需要将
列表框
上的
垂直滚动条可见性
设置为自动

<Grid Width="400" Height="400">  
   <Grid.RowDefinitions>
     <RowDefinition Height="auto"/>
     <RowDefinition Height="200"/>
     <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>


这只是将列表框的高度固定为200像素。我试图让列表框垂直增大,直到它将按钮按到窗口的底部边缘,然后在列表框中显示滚动条。啊,是的,对不起,我在您的操作中错过了这一点,抱歉。看起来不错,您不能在列表框中使用滚动查看器,而不是将其包装成一个滚动条吗?像Richard这样的东西不起作用,这有点令人惊讶。一旦可用空间被填满(即按钮被推到窗口底部),列表框将继续垂直增长,但会被剪切到该中心区域,并且不会出现滚动条。不管怎样,谢谢你的帮助。嗯,很奇怪,我希望这能起作用,但我承认我在ScrollViewer中发现了一些有趣的东西,所以我不觉得奇怪它有点像雪花。