我有一个像这样定义的列表框:
<ListBox.ItemTemplate>
<DataTemplate>
<ItemsControl>
<!-- Contents here -->
</ItemsControl>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我的问题是:此列表包含在网格控件中,并应使用其包含的该单元格的所有可用空间,但不应强制父级分配更多空间。但是,一旦填充面板填满,而不是实际将项目包装到下一行(应该如此),它只会扩展列表框的宽度,并在此过程中强制父网格也调整大小。
如何让wrap panel尊重其父级的大小,而不是强制它扩展它的大小?
提前致谢!
编辑:还有一件事。我可以显式设置wrappanel的宽度以使其换行,但我希望wrappanel与listbox具有相同的大小。
答案 0 :(得分:17)
设置ScrollViewer.HorizontalScrollBarVisibility="Disabled"
,WrapPanel
将换行。
<Grid>
<ListBox
ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
</Grid>
答案 1 :(得分:0)
我已经解决了问题..问题是(可能)包含我的列表框的一些容器有点过于慷慨,为我的列表框分配空间。 在任何情况下,只要我删除其余容器(包含我的列表)的滚动条,它就会按预期工作。 :)
感谢您的回复,这对解决这个问题非常有帮助。
答案 2 :(得分:0)
我在设计模式(Blend和VS 2013)中处理这个问题,直到我在页面上添加了一些设计时间,它才进行换行:
d:DesignHeight = “300” d:DesignWidth = “600”
答案 3 :(得分:0)
通常,在将“水平”滚动条设置为“禁用”之前,它不会按预期换行。现在你有一个实际包裹的包装:)“
ScrollViewer.HorizontalScrollBarVisibility="Disabled"