我们有一个包含各种元素和数据网格的表单。当列表框包含在滚动查看器中时,当我们增加窗口大小时,一切都很好。当窗口大小减小时,列表框保持相同的高度,垂直滚动条变为活动状态。如果删除列表框中的高度绑定,列表框将达到其所需的最大高度。如果我们没有一个列表框,那么边框的行为就像我们想要的那样。
我们可以使用以下代码模拟我们的问题。
<Window
x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow"
Height="150"
Width="525">
<Grid
Margin="10">
<ScrollViewer>
<Grid>
<Grid.RowDefinitions>
<RowDefinition
Height="*" />
<RowDefinition
Height="Auto" />
</Grid.RowDefinitions>
<Border
x:Name="border"
MinHeight="40" />
<ListBox
Height="{Binding ElementName=border, Path=ActualHeight}">
<ListBoxItem>Item 1</ListBoxItem>
<ListBoxItem>Item 1</ListBoxItem>
<ListBoxItem>Item 1</ListBoxItem>
<ListBoxItem>Item 1</ListBoxItem>
<ListBoxItem>Item 1</ListBoxItem>
<ListBoxItem>Item 1</ListBoxItem>
<ListBoxItem>Item 1</ListBoxItem>
<ListBoxItem>Item 1</ListBoxItem>
<ListBoxItem>Item 1</ListBoxItem>
<ListBoxItem>Item 1</ListBoxItem>
<ListBoxItem>Item 1</ListBoxItem>
<ListBoxItem>Item 1</ListBoxItem>
</ListBox>
<ToolBar
Grid.Row="1">
<Button
Content="Add" />
</ToolBar>
</Grid>
</ScrollViewer>
</Grid>
</Window>
如果没有ListBox,我们如何让ListBox以与边框相同的方式调整大小?
答案 0 :(得分:1)
不是100%肯定你在找什么,但我认为
<ListBox HorizontalAlignment="Stretch"
VerticalAlignment="Stretch">
可能就是您所需要的。它会缩小列表框,直到达到最小尺寸(显示所有项目),然后激活滚动条。
答案 1 :(得分:1)
我不确定你在这里要做什么,但是如果你希望列表框在窗口高度减小时减小它的高度,那么你必须将边距添加到边框所以它就像
<Border
Margin="5"
x:Name="border"
MinHeight="40" />
注意:
这将使列表框高度降低但是它可能会激活列表框的内部滚动,因此您将看到两个滚动条。
在另一个注释上你也可以删除第一行定义的height =“*”,这样就可以得到网格高度的其余部分。