【问题标题】:WPF ListView no scrollbar if height set to auto如果高度设置为自动,WPF ListView 没有滚动条
【发布时间】:2011-09-07 11:40:54
【问题描述】:

您好,我有一个绑定到集合的 ListView。我将 ListView 的高度设置为 auto 以占用该区域中的所有空间。但是,我将高度设置为自动后没有滚动条。如果我给它一个高度,那么滚动条就会出现。

标记和下面的差不多

<Grid>
   <StackPanel>
      <Expander>
          <DataGrid>
      <Expander>
          <ListView>

【问题讨论】:

  • 我有一种预感,“有什么想法吗?”这不是您的实际问题。
  • 里面的ListView是什么容器/面板?

标签: wpf listview layout scrollbar


【解决方案1】:

如果没有可滚动的内容,为什么要显示滚动条?

如果您想覆盖任何默认行为,您可以在 ListBox 上设置 ScrollViewer.VerticalScrollBarVisibility="Visible"

【讨论】:

    【解决方案2】:

    我有一种预感,您的ListView 位于一个面板内,允许它无限地垂直扩展。

    例如,如果您将ListView 放在StackPanel 中,则ListView 的高度可能会超过StackPanel 的高度。 ListView 增加了高度以显示其所有项目,就它而言,因此没有滚动条。

    但是,如果您将 StackPanel 更改为 Grid,其中控件会自动尝试将自己放入该区域,当 ListView 包含的项目超出其显示范围时,它将自动具有滚动条。

    这很可能通过调整包含ListView 的布局来解决。

    【讨论】:

    • 这正是我所拥有的。使用标记示例更新了帖子。
    • 我会问:StackPanel 中只有 2 个 Expanders 吗? StackPanelGrid 中唯一的东西吗?您是否希望ListView 只占用外部Grid 中可用的空间?如果所有这些都是,您可以使用DockPanel 而不是StackPanel。如果ExpanderListView 是最后一个孩子,它将填充剩余区域。
    • 很好的解释乔尔。帮助我解决了在 StackPanel 中放置 ListView 的类似问题。
    【解决方案3】:

    而不是设置

    <RowDefinition Height="auto"/>
    

    设置:

    <RowDefinition Height="1*"/>
    

    【讨论】:

    • 嗯,您的意思是指Grid 的一个或多个Row 上的Height 属性吗? AFAIK,在所有提到的元素中,GridRow 是唯一的 Height 属性接受“*”符号的元素。
    猜你喜欢
    • 2015-09-24
    • 2015-10-26
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    • 2015-12-08
    • 2011-02-13
    相关资源
    最近更新 更多