【发布时间】:2014-09-29 15:55:57
【问题描述】:
如何将垂直的WrapPanel 实现为DataGrid 的ItemsPanel?
DataGrid 不会在 height 中扩展,而是水平拆分为另一列(带有标题和全部)。
我的问题类似于此线程 How to make DataGrid work with WrapPanel?
举个例子。如果所有行都无法适应高度,则下一行从下一列开始
|H1 | H2 | |H1 |H2 |
-------------- --------------
|A1 | B1 | |A5 |B5 |
-------------- --------------
|A2 | B2 | |A6 |B6 |
-------------- --------------
|A3 | B3 | |A7 |B7 |
-------------- --------------
|A4 | B4 | | | |
-------------- --------------
如果数据网格的高度增加,那么,
|H1 | H2 | |H1 |H2 |
-------------- --------------
|A1 | B1 | |A7 |B7 |
-------------- --------------
|A2 | B2 | | | |
-------------- --------------
|A3 | B3 | | | |
-------------- --------------
|A4 | B4 | | | |
-------------- --------------
|A5 | B5 | | | |
-------------- --------------
|A6 | B6 | | | |
-------------- --------------
目前
我已经设法让它进入下一列
<DataGrid ItemsSource="{Binding Path=Items}">
<DataGrid.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel MaxHeight="500" Orientation="Vertical" IsItemsHost="True"/>
</ItemsPanelTemplate>
</DataGrid.ItemsPanel>
<DataGrid.Columns>
<DataGridTextColumn Header="No." Binding="{Binding Item1}" />
<DataGridCheckBoxColumn Header="A" Binding="{Binding Item2}" />
<DataGridCheckBoxColumn Header="B" Binding="{Binding Item3}" />
<DataGridCheckBoxColumn Header="C" Binding="{Binding Item4}" />
<DataGridCheckBoxColumn Header="D" Binding="{Binding Item5}" />
<DataGridTextColumn Binding="{x:Null}" />
</DataGrid.Columns>
</DataGrid>
我已禁用代码中的标题,因为我无法让它在下一列重复,并添加了一个空列,因为当行在下一列重新开始时我无法获得边距。
当网格不需要水平滚动时,这可以正常工作(除了上述原因)。但是当网格需要水平滚动时,每一列都开始滚动并消失在左边
不滚动时
滚动时
【问题讨论】:
标签: c# wpf xaml datagrid itemspanel