2012-04-04 83 views
1

我创建了一个水平方向的列表框。当我加载内容时,在堆叠面板中,堆叠面板的大小将自动调整到内部存储的内容的大小。我如何在列表框中实现此目的?如何自动调整listboxitem的大小?

这是在XAML我listboxcode:

<ListBox Name="WebScrollView" 
      Grid.Row="2" 
      ScrollViewer.HorizontalScrollBarVisibility="Auto" 
      SelectionMode="Multiple" 
      ScrollViewer.VerticalScrollBarVisibility="Disabled" 
      VerticalContentAlignment="Stretch" 
      HorizontalContentAlignment="Stretch" > 
     <ListBox.ItemContainerStyle> 
      <Style TargetType="ListBoxItem"> 
       <Setter Property="VerticalContentAlignment" Value="Stretch"/> 
       <Setter Property="Height" Value="Auto" /> 
      </Style> 
     </ListBox.ItemContainerStyle> 
     <ListBox.ItemsPanel> 
      <ItemsPanelTemplate> 
       <StackPanel Orientation="Horizontal" 
          VerticalAlignment="Top" 
          HorizontalAlignment="Center" 
          /> 
      </ItemsPanelTemplate> 
     </ListBox.ItemsPanel>   
    </ListBox> 
+0

哪些内容具有负载如果图像提的尺寸? – 2012-04-04 13:22:45

+0

我在里面有一个web浏览器,当它成功导航时,它被添加到列表框中。当我将它添加到一个堆栈面板时,它会调整大小,但是当未指定时,列表框将高度设置为默认值0.0。 所以这就是问题所在:我无法对它进行硬编码,因为一个webview可能高度为1000,接下来可能是2000甚至是3000. 换句话说:我没有指定高度 – GeekPeek 2012-04-04 13:26:50

+0

如果我设置高度浏览器,比如1500,它会正常显示。 – GeekPeek 2012-04-04 13:28:03

回答

1

web浏览器对CPU和内存非常昂贵的控制。单独为ListBox中的每个项目创建WebBrowser的单独实例似乎是一个糟糕的主意。我建议你使用Html Agility Pack来提取你想要的字段并将它们绑定到TextBlocks和其他控件中。您还可以更好地控制每个项目的显示。

http://htmlagilitypack.codeplex.com/