Silverlight:使ListBox足够大以适应所有内容?

时间:2010-11-23 20:02:18

标签: silverlight

我有一个ListBox有足够的项目,可以看到垂直滚动条。如何使列表框自动增长,以便它可以一次显示所有项目而无需滚动?

感谢。

2 个答案:

答案 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放在StackPanelStackPanelListBox无限大小。你仍然需要确保StackPanel的大小无限制。