【问题标题】:WPF: WrapPanel in ItemsPanelTemplate expands list widthWPF:ItemsPanelTemplate 中的 WrapPanel 扩展列表宽度
【发布时间】:2011-03-11 01:59:24
【问题描述】:

我有一个这样定义的列表框:

    <ListBox.ItemTemplate>
        <DataTemplate>
            <ItemsControl>
                <!-- Contents here -->
            </ItemsControl>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

我的问题是:这个列表包含在一个网格控件中,应该使用它包含的那个单元格的所有可用空间,但它不应该强制父级分配更多空间。但是发生的情况是,一旦包装面板填满,而不是实际将项目包装到下一行(应该如此),它只是扩展了列表框的宽度,并且在此过程中强制父网格也调整大小。

如何让环绕面板尊重其父级的大小,而不是强制其扩大其大小?

提前致谢!

编辑:还有一件事。我可以显式设置包裹面板的宽度以使其包裹,但我希望包裹面板与列表框具有相同的大小。

【问题讨论】:

    标签: wpf size parent wrappanel


    【解决方案1】:

    设置ScrollViewer.HorizontalScrollBarVisibility="Disabled"WrapPanel 将自动换行。

    <Grid>
        <ListBox
            ScrollViewer.HorizontalScrollBarVisibility="Disabled">
            <ListBox.ItemsPanel>
                <ItemsPanelTemplate>
                    <WrapPanel />
                </ItemsPanelTemplate>
            </ListBox.ItemsPanel>
        </ListBox>
    </Grid>
    

    【讨论】:

    • 不幸的是,这不起作用...我尝试将其设置为隐藏和禁用,它仍然扩展了它使用的空间。 :( 请注意,问题从来不是列表框变得比它所在的网格大(因此会显示滚动条),问题是它所在的网格单元被放大了,并且列表框也被放大了。
    • 哦,还有一件事。网格包含在统一网格中,这可能是问题吗?也许 uniformgrid 不包含网格,因此会扩展。
    • 在您的问题中,您提到了 wrappanel 而不是 uniformgrid。正如您在有关包装板的问题中解释的那样,我的代码解决了您的问题。如果您也对uniformgrid 作为列表框中的项目面板有疑问,您应该写另一个问题。
    • 我想你误解了我......问题是关于 wrappanel 不包装。结构是这样的:UniformGrid->Grid->ListBox with WrapPanel
    【解决方案2】:

    我已经解决了这个问题.. 问题是(可能)包含我的列表框的一些容器在为我的列表框分配空间方面有点过于慷慨。 无论如何,只要我删除了其余容器(包含我的列表)的滚动条,它就会按预期工作。 :)

    感谢您的回复,对解决这个问题很有帮助。

    【讨论】:

      【解决方案3】:

      我在设计模式(Blend 和 VS 2013)中处理了这个问题,直到我在页面中添加了一些设计时大小调整后它才结束:

      d:DesignHeight="300" d:DesignWidth="600"

      【讨论】:

        【解决方案4】:

        在您将水平滚动条设置为禁用之前,它通常不会按预期换行。现在你有一个实际包裹的包裹面板:)

        ScrollViewer.HorizontalScrollBarVisibility="Disabled"
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-06-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-05-14
          • 2016-06-28
          • 1970-01-01
          • 2013-04-02
          相关资源
          最近更新 更多