我有一个ListBox
有足够的项目,可以看到垂直滚动条。如何使列表框自动增长,以便它可以一次显示所有项目而无需滚动?
感谢。
答案 0 :(得分:4)
问题在于ListBox
模板的核心是这个Xaml: -
<Border CornerRadius="2" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
<ScrollViewer x:Name="ScrollViewer" Padding="{TemplateBinding Padding}" Background="{TemplateBinding Background}" BorderBrush="Transparent" BorderThickness="0" TabNavigation="{TemplateBinding TabNavigation}">
<ItemsPresenter />
</ScrollViewer>
</Border>
ScrollViewer使您想要做的事情非常困难。解决方案是(假设你确实需要一个 ListBox )是重新模板ListBox。将模板的上述部分调整为: -
<Border CornerRadius="2" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}">
<ItemsPresenter />
</Border>
您可能也希望将StackPanel
用作项目面板。
但是,如果您不需要ListBox的选择功能,则可以使用简单的ItemsControl。
答案 1 :(得分:0)
你必须确保它的容器会给它足够的空间。如果ListBox
的容器是具有固定宽度和高度的Grid
,那么它将为ListBox
提供固定大小。当项目的高度超过该大小时,滚动条将变为可见。如果您将ListBox
放在StackPanel
中StackPanel
将ListBox
无限大小。你仍然需要确保StackPanel
的大小无限制。