6

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

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

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

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

提前致谢!

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

4

4 回答 4

18

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

<Grid>
    <ListBox
        ScrollViewer.HorizontalScrollBarVisibility="Disabled">
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel />
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
    </ListBox>
</Grid>
于 2010-07-02T12:37:36.417 回答
0

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

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

于 2010-07-07T06:57:37.350 回答
-1

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

ScrollViewer.HorizontalScrollBarVisibility="Disabled"
于 2016-02-23T01:39:44.407 回答
-2

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

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

于 2014-04-29T22:46:20.173 回答