ListView Grow而不是Scroll

时间:2011-03-04 20:48:24

标签: .net wpf xaml

是否有一种方法(没有代码隐藏)使WPF ListView增长到其内容的宽度或高度而不是滚动?有点像StackPanel只能仍然可选。

例如,如果我有:

<ScrollViewer>
  <StackPanel>
    <ListView ItemsSource="{Binding Rail1}">
      <ListView.ItemsPanel>
        <ItemsPanelTemplate>
          <StackPanel Orientation="Horizontal" />
        </ItemsPanelTemplate>
      </ListView.ItemsPanel>
    </ListView>
    <ListView ItemsSource="{Binding Rail2}">
      <ListView.ItemsPanel>
        <ItemsPanelTemplate>
          <StackPanel Orientation="Horizontal" />
        </ItemsPanelTemplate>
      </ListView.ItemsPanel>
    </ListView>
  </StackPanel>
</ScrollViewer>

ScrollViewer不显示水平滚动条,而是ListViews。

2 个答案:

答案 0 :(得分:1)

这取决于它的容器,但是如果你将HorizontalAlignment属性设置为"Stretch"并且ListView的容器将允许它,它应该根据其内容调整自己的大小。

*编辑** 如果你想要两个ListView都不滚动,那么执行以下操作:

<ScrollViewer>
   <DockPanel>
      <ListView ItemsSource="{Binding Rail1}" DockPanel.Dock="Top" />
      <ListView ItemsSource="{Binding Rail2}" DockPanel.Dock="Top" />
   </DockPanel>
</ScrollViewer>

我认为这会给你你想要的东西。

答案 1 :(得分:1)

这取决于容器。将ListView本身添加到ScrollViewer - 它应该可以解决问题。

<ScrollViewer HorizontalScrollBarVisibility="Auto">
    <StackPanel>
        <ListView ItemsSource="{Binding Rail1}" > 
            <ListView.ItemsPanel>
                <ItemsPanelTemplate>
                    <StackPanel Orientation="Horizontal" />
                </ItemsPanelTemplate>
            </ListView.ItemsPanel>
        </ListView>
        <ListView ItemsSource="{Binding Rail2}" >
            <ListView.ItemsPanel>
                <ItemsPanelTemplate>
                    <StackPanel Orientation="Horizontal" />
                </ItemsPanelTemplate>
            </ListView.ItemsPanel>
        </ListView>
    </StackPanel>
</ScrollViewer>