<GridView ItemsSource="{Binding SomeSource}" >
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<WrapGrid Orientation="Horizontal" HorizontalChildrenAlignment="Stretch"/>
</ItemsPanelTemplate>
</GridView.ItemsPanel>
<GridView.ItemTemplate>
<DataTemplate>
<Grid>
<ContentControl>
<!--hidden for simplicity-->
</ContentControl>
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
WrapGrid 中的HorizontalChildrenAlignment="Stretch"
没有效果?如何使网格项对齐,使最左侧的项目将保持在 WrapGrid 的左边框,而最右侧的项目将保持 WrapGrid 的右边框,并在网格项目之间均匀分布额外的空间?
之间的间距是网格项中的指定边距,如果剩余空间不足以容纳另一个网格项,则 WrapGrid 右边框的最右侧项之间存在较大的间距。理想情况下,我们希望额外的空间均匀分布在网格项之间,而不是在最右侧的网格项的右侧留下剩余空间。
我想你要找的是这个?
<WrapGrid Orientation="Horizontal" VerticalChildrenAlignment="Stretch"/>
不是水平的,而是VerticalChildrenAlignment
的.我必须补充一点,如果没有至少一个包装的项目,它看起来确实很奇怪,因为水平调整大小会使项目"跳跃">
WrapGrid 没有这种开箱即用的动态功能。如果要显示的项目数量固定,则可以手动计算最佳边距。
其他选项是从 GridView 切换到网格,并调整此处显示的 WPF 代码。但这也不是完全动态的解决方案,因为您需要定义每行显示多少项。