2

我怎样才能将 a 垂直实现WrapPanel为 a DataGridItemsPanel遗嘱不是在高度上扩展,DataGrid而是水平分成另一列(带有标题和全部)。我的问题类似于此线程上的示例 2如何使 DataGrid 与 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>

我已禁用代码中的标题,因为我无法让它在下一列中重复,并添加了一个空列,因为当行在下一列再次开始时我无法获得边距。

当网格不需要水平滚动时,这可以正常工作(除了上述原因)。但是当网格需要水平滚动时,每一列都开始滚动并消失在左边

不滚动时 一般不用滚动

滚动时 在此处输入图像描述

4

1 回答 1

0

我知道回答这个问题已经很晚了。(已经6年前了,LOL)希望我能很好地理解你的问题,这是第一次在这里回答~

当我使用您的代码进行测试时,左右滚动时遇到了同样的问题。我的解决方案是在datagrid之外加一层listview。如果我们使用datagrid自带的滚动条,而datagrid的设置不够好,视图会混淆用户。

因此,在datagrid的外层添加一个listview可以帮助解决滚动问题,因为listview不限制内容的大小,因此datagrid不会强制出现自己的滚动条。

<ListView Grid.Row="0" HorizontalAlignment="Center">
    <DataGrid Name="dtGrid" ItemsSource="{Binding DtGridData}" AutoGenerateColumns="False" BorderBrush="Blue" BorderThickness="5" HeadersVisibility="Column">
        
        <DataGrid.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel MaxHeight="300" Orientation="Vertical"/>
            </ItemsPanelTemplate>
        </DataGrid.ItemsPanel>
        
        
        <DataGrid.Columns>
            <DataGridTextColumn Header="Name"
                            Binding="{Binding Custname}"
                            Width="100">
                <DataGridTextColumn.CellStyle>
                    <Style TargetType="DataGridCell">
                        <Setter Property="Background" 
                            Value="BlanchedAlmond" />
                    </Style>
                </DataGridTextColumn.CellStyle>
            </DataGridTextColumn>

            <DataGridTextColumn Header="Mobile NO"
                            Binding="{Binding Mobileno}"
                            Width="100"
                            FontFamily="Times New Roman" >
                <DataGridTextColumn.CellStyle>
                    <Style TargetType="DataGridCell">
                        <Setter Property="Background" 
                            Value="MistyRose" />
                    </Style>
                </DataGridTextColumn.CellStyle>
            </DataGridTextColumn>
            <DataGridTextColumn Header="Credit"
                            Binding="{Binding Credit}"
                            Width="100"
                            FontFamily="Times New Roman" >
                <DataGridTextColumn.CellStyle>
                    <Style TargetType="DataGridCell">
                        <Setter Property="Background" 
                            Value="Honeydew" />
                    </Style>
                </DataGridTextColumn.CellStyle>
            </DataGridTextColumn>
        </DataGrid.Columns>
    </DataGrid>
    </ListView>

下图显示了当窗口变小时,列表视图的滚动条会出现,但数据网格的滚动条不会出现。

结果

希望这会有所帮助,老实说,您将 wrappanel 添加到 itemspanel 中的想法可以挽救我的生命。谢谢,哈!

于 2021-08-11T04:19:42.367 回答