XAML布局问题
我有以下XAML:-XAML布局问题,xaml,Xaml,我有以下XAML:- <Grid Width="400" Height="400"> <Grid.RowDefinitions> <RowDefinition Height="auto"/> <RowDefinition Height="auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <TextB
<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中发现了一些有趣的东西,所以我不觉得奇怪它有点像雪花。