【问题标题】:How do I get a scrollbar to appear with a ListView when the height is auto?当高度为自动时,如何让滚动条与 ListView 一起出现?
【发布时间】:2013-07-13 21:43:27
【问题描述】:

我正在开发一个 Windows 应用商店应用程序。

我有一个 ListView,里面有一堆项目。它嵌套在一些堆栈面板和网格中,但它们基本上都是自动调整大小的。从本质上讲,ListView 占据了屏幕的大部分右半部分,而不管它的大小。

如果我给 ListView 一个硬值高度,滚动条将自动出现,无需额外工作。伟大的。但我不想设置高度......我希望它是其容器中可用的所有区域。如果我尝试变得聪明并将其设置为 9999 或其他内容,那么它将不会滚动。

我已经做了很多研究,类似的问题像this 说持有 ListView 的东西不能像 StackPanel 那样给它无限的大小。我有什么选择?如何将 ListView 放在具有任意空间的东西中并显示滚动条?

我唯一的想法是,必须有某种方法,在保存 ListView 的容器中,告诉 ListView 它具有所有可用区域,以使其高度设置为该值。有点像如何必须将 ListViewItem 的 Horizo​​ntalContentAlignment 属性设置为“Stretch”,以便让 ListView 中的项目知道它们实际具有的可用宽度。

我的布局的基本部分是这样的:

<!-- Nested in some other stuff simple Grids and StackPanels, none of which has hard heights set (all auto or *) -->

<!-- Even if I made this a Grid with one Row, setting definition to * or Auto doesn't help the issue - no scroll bar appears -->
<StackPanel>

    <!-- Other stuff that has Visibility="Collapsed"... I have code so that only one item at a time within this container will ever be visible, and it gets all available space. -->

    <ListView ItemsSource="{Binding SomeBigList}" ItemTemplate="{StaticResource MyDataTemplate}" />

    <!-- Other stuff that has Visibility="Collapsed" -->

</StackPanel>

如何在不设置硬高度的情况下让滚动条出现在 ListView 中?谢谢你的帮助。

【问题讨论】:

  • Stackpanel 始终调整为包含其子项所需的最小大小(即它不会填充父容器)。您可以只使用几个 * 大小的嵌套网格,因为孩子会占用所有空间而不会被赋予无限大小
  • 您是否尝试过将StackPanel 切换为DockPanel,然后在ListView 中设置Height="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DockPanel}}, Path=ActualHeight}"

标签: wpf xaml windows-store-apps


【解决方案1】:

不要使用&lt;StackPanel&gt;

如果您可以控制绘制的内容,并且任何时候只能看到一个项目,那么请使用非无限大小的容器,例如 &lt;Grid&gt;。您可以将每个项目放在同一行,或者使用单独的行,如果只是为了便于发现是什么。

【讨论】:

  • 使用 100% 网格确实可以解决问题,即使它位于 * 大小的行中。我希望 StackPanels 有一个旋钮,使它们不是无限大的。到目前为止,它一直是一个如此直观的容器,我讨厌因为稍微冗长的网格而忽略它。
【解决方案2】:

我在 Windows Phone 应用上遇到了类似的情况。您需要通过创建一个测试页面并确定哪个面板导致您的最终问题来删除其他容器的变量。

  1. 使用 Grid 和 ListView 创建新的空白页。
  2. 将网格大小设置为自动(自动)或 * 大小,直到您看到水平滚动条。
  3. 水平滚动条出现后,依次添加其他容器,直到滚动条消失。这将告知您导致尺寸错误并最终导致滚动条出现故障的罪魁祸首。

【讨论】:

    猜你喜欢
    • 2012-07-07
    • 2011-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多