2011-11-29 94 views
0

我用特定的数据填充列表框,代码工作正常,但我需要添加一个滚动查看器到列表框,因为里面有很多元素,我尝试使用ScrolViewer并放入listbox,但不起作用,这里是代码列表框中的滚动查看器

<StackPanel x:Name="Sites" Grid.Row="1" Orientation="Vertical"> 
    <ListBox x:Name="ListSites" > 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
      <Button Width="460" Height="120" Click="click" Name="btn"> 
      <Button.Content> 
       <StackPanel Orientation="Vertical" Height="100" Width="460"> 
       <TextBlock Width="460" Name="txtname" FontSize="22" Text="{Binding name}" Height="40" Foreground="CadetBlue" /> 
       <TextBlock Width="460" Name="txtUrl" FontSize="22" Text="{Binding Url}" Height="60"/> 
       </StackPanel> 
       </Button.Content> 
       </Button> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
     </ListBox> 
    </StackPanel> 

回答

0

如果ListBox没有给予无限的高度空间,那么它应该在项目溢出它的边界时自动滚动。例如,如果您的堆叠面板外部的第二个网格行设置了明确或“星号”高度,则列表框中的滚动条将自动显示。

参见:Silverlight: Difficulty with ScrollViewer

0

你不应该需要一个ScrollViewer添加到您的ListBox。它将在空间不足时开始滚动。

但是,因为你已经把一个ListBox里面StackPanel它永远不会认为它运行的空间,因为StackPanel在它的方向,以适应其内容的方向无限增长。

您需要为您的ListBox使用不同的容器。

0
<ItemsControl.ItemsPanel> 
    <ItemsPanelTemplate> 
     <StackPanel Orientation="Vertical"/> 
    </ItemsPanelTemplate> 
</ItemsControl.ItemsPanel> 
1

我固定它,简单地增加Height属性在ListBox控件

+0

您已经发布的解决方案是由其他专家提出的没有什么不同 - 我可以问你为什么没有选择之一他们的答案? – Basic