Silverlight:使列表框足够大以容纳所有内容?

Silverlight:使列表框足够大以容纳所有内容?,silverlight,Silverlight,我有一个列表框,其中有足够的项目,可以使垂直滚动条可见。如何使列表框自动增加高度,使其能够一次显示所有项目,而无需滚动 谢谢。您必须确保它的容器会给它足够的空间。如果列表框的容器是具有固定宽度和高度的网格,则它将为列表框提供固定大小。当项目高度超过该大小时,滚动条将可见。如果将ListBox放入StackPanel中,StackPanel将使ListBox无限大。您仍然必须确保堆叠面板的大小是无限制的。您必须确保它的容器将给它足够的空间。如果列表框的容器是具有固定宽度和高度的网格,则它将为列表框

我有一个
列表框
,其中有足够的项目,可以使垂直滚动条可见。如何使列表框自动增加高度,使其能够一次显示所有项目,而无需滚动


谢谢。

您必须确保它的容器会给它足够的空间。如果
列表框
的容器是具有固定宽度和高度的
网格
,则它将为
列表框
提供固定大小。当项目高度超过该大小时,滚动条将可见。如果将
ListBox
放入
StackPanel
中,
StackPanel
将使
ListBox
无限大。您仍然必须确保堆叠面板的大小是无限制的。

您必须确保它的容器将给它足够的空间。如果
列表框
的容器是具有固定宽度和高度的
网格
,则它将为
列表框
提供固定大小。当项目高度超过该大小时,滚动条将可见。如果将
ListBox
放入
StackPanel
中,
StackPanel
将使
ListBox
无限大。您仍然必须确保
StackPanel
的大小没有限制。

问题在于
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使您想做的事情变得非常困难。解决方案是(假设您确实需要一个列表框),即重新设置列表框的模板。将模板的上述部分调整为:-

<Border CornerRadius="2" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}">
    <ItemsPresenter />
</Border>

您可能还想使用
StackPanel
作为项目面板


但是,如果您不需要ListBox的选择功能,那么一个简单的ItemsControl就可以了

问题在于
列表框
模板的核心是这个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使您想做的事情变得非常困难。解决方案是(假设您确实需要一个列表框),即重新设置列表框的模板。将模板的上述部分调整为:-

<Border CornerRadius="2" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}">
    <ItemsPresenter />
</Border>

您可能还想使用
StackPanel
作为项目面板

但是,如果您不需要ListBox的选择功能,那么一个简单的ItemsControl就可以了