【问题标题】:ListView Grow instead of ScrollListView 增长而不是滚动
【发布时间】:2011-03-05 05:54:28
【问题描述】:

有没有办法(没有代码隐藏)使 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 则显示。

【问题讨论】:

  • ListViews 上是否有任何样式或其他设置?或者Rail1Rail2中的一些特殊数据?如果您将 HorizontalScrollBarVisibility="Auto" 添加到 scrollViewer 中,您的示例工作正常。
  • 对不起。我忘了提到我使用 StackPanel 作为列表视图的 ItemsPanel。我试图让增长是水平的,而不是垂直的。也许 StackPanel 不是 ItemsPanel 的正确选择?

标签: .net wpf xaml


【解决方案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>

【讨论】:

  • 与直觉相反,一旦我将 Horizo​​ntalScrollBarVisibility 设置为 auto,它就起作用了。我认为这会隐含地发生,但显然不是。谢谢!
【解决方案2】:

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

* 编辑 ** 如果您希望 ListView 不滚动,请执行以下操作:

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

我想这会给你想要的。

【讨论】:

  • 请看我上面的编辑。 StackPanel 是不是在 ScrollViewer 中用作容器的错误控件?
猜你喜欢
  • 1970-01-01
  • 2017-06-15
  • 2017-09-14
  • 1970-01-01
  • 2014-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多