WPF dataGrid 多列的 super 标题

标签 wpf wpf-controls wpfdatagrid wpf-4.0

我想在 WPF DataGrid 中为多列添加标题。我尝试使用标题模板,但它会显示一列的标题。

下面的 XAML 我已经尝试过:

  <DataGrid>
        <DataGrid.Columns>
            <DataGridTextColumn>
                <DataGridTextColumn.HeaderTemplate>
                    <DataTemplate>
                        <StackPanel>
                            <TextBlock>Column 1</TextBlock>
                            <TextBlock>xyz</TextBlock>
                        </StackPanel>
                    </DataTemplate>
                </DataGridTextColumn.HeaderTemplate>
            </DataGridTextColumn>
            <DataGridTextColumn Header="Header" />
        </DataGrid.Columns>
    </DataGrid>

我还附上了我的预期结果屏幕截图:

 <Grid Width="Auto">
                    <Grid.RowDefinitions>
                        <RowDefinition />
                        <RowDefinition />
                    </Grid.RowDefinitions>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition />
                        <ColumnDefinition />
                        <ColumnDefinition />
                    </Grid.ColumnDefinitions>
                    <toolkit:DataGrid x:Name="problemsList"
                                      MinHeight="205"
                                      MaxHeight="205"
                                      Margin="3"
                                      VerticalAlignment="Top"
                                      AutoGenerateColumns="False"
                                      CanUserAddRows="False"
                                      CanUserDeleteRows="False"
                                      CanUserReorderColumns="False"
                                      CanUserResizeColumns="True"
                                      CanUserResizeRows="False"
                                      ColumnHeaderStyle="{StaticResource GridColumnHeaderStyle}"
                                      HorizontalScrollBarVisibility="Visible"
                                      ItemsSource="{Binding FisapCorrections}"
                                      MouseLeftButtonUp="problemsList_MouseLeftButtonUp"
                                      SelectionMode="Single"
                                      Sorting="problemsList_Sorting"
                                      VerticalScrollBarVisibility="Auto">
                        <toolkit:DataGrid.Columns>
                            <toolkit:DataGridTemplateColumn MinWidth="50"
                                                            CellTemplate="{StaticResource RowSelected}"
                                                            Header="Select" />
                            <toolkit:DataGridTextColumn MinWidth="88"
                                                        Binding="{Binding StudentName}"
                                                        Header="Student Name"
                                                        IsReadOnly="True" />
                            <toolkit:DataGridTextColumn x:Name="dgtcSSN"
                                                        MinWidth="50"
                                                        Binding="{Binding SSN}"
                                                        Header="SSN"
                                                        IsReadOnly="True" />
                            <toolkit:DataGridTextColumn x:Name="dgtcStuNum"
                                                        MinWidth="50"
                                                        Binding="{Binding StuNum}"
                                                        Header="StuNum"
                                                        IsReadOnly="True" />
                            <toolkit:DataGridTextColumn MinWidth="80"
                                                        Binding="{Binding Campus}"
                                                        Header="Campus"
                                                        IsReadOnly="True" />
                            <toolkit:DataGridTextColumn Width="50"
                                                        MinWidth="50"
                                                        Binding="{Binding BadModel,
                                                                          Converter={StaticResource ToEmptyStringConverter}}"
                                                        Header="BadModel"
                                                        HeaderTemplate="{StaticResource DepModelHeaderTemplate}"
                                                        IsReadOnly="True" />
                            <toolkit:DataGridTextColumn Width="72"
                                                        MinWidth="72"
                                                        Binding="{Binding BadPellEnrollStatus,
                                                                          Converter={StaticResource ToEmptyStringConverter}}"
                                                        CanUserReorder="False"
                                                        Header="BadPellEnrollStatus"
                                                        HeaderTemplate="{StaticResource EnrollStatusHeaderTemplate}"
                                                        IsReadOnly="True" />
                            <toolkit:DataGridTextColumn Width="75"
                                                        MinWidth="75"
                                                        Binding="{Binding DupePell,
                                                                          Converter={StaticResource ToEmptyStringConverter}}"
                                                        Header="DupePell"
                                                        HeaderTemplate="{StaticResource DupStudentPellHeaderTemplate}"
                                                        IsReadOnly="True" />
                            <toolkit:DataGridTextColumn Width="80"
                                                        MinWidth="80"
                                                        Binding="{Binding BadTransactionId,
                                                                          Converter={StaticResource ToEmptyStringConverter}}"
                                                        Header="BadTransactionId"
                                                        HeaderTemplate="{StaticResource InvTransactionIDHeaderTemplate}"
                                                        IsReadOnly="True" />
                            <toolkit:DataGridTextColumn Width="40"
                                                        MinWidth="40"
                                                        Binding="{Binding HasNoISIR,
                                                                          Converter={StaticResource ToEmptyStringConverter}}"
                                                        Header="HasNoISIR"
                                                        HeaderTemplate="{StaticResource NoISIRHeaderTemplate}"
                                                        IsReadOnly="True" />
                            <toolkit:DataGridTextColumn Width="75"
                                                        MinWidth="75"
                                                        Binding="{Binding GradWithSEOG,
                                                                          Converter={StaticResource ToEmptyStringConverter}}"
                                                        Header="GradWithSEOG"
                                                        HeaderTemplate="{StaticResource NotEligxSEOGHeaderTemplate}"
                                                        IsReadOnly="True" />
                            <toolkit:DataGridTextColumn Width="100"
                                                        MinWidth="100"
                                                        Binding="{Binding GradIsDependent,
                                                                          Converter={StaticResource ToEmptyStringConverter}}"
                                                        Header="GradIsDependent"
                                                        HeaderTemplate="{StaticResource GradWithDepModelHeaderTemplate}"
                                                        IsReadOnly="True" />
                            <toolkit:DataGridTextColumn Width="60"
                                                        MinWidth="60"
                                                        Binding="{Binding NoClasses,
                                                                          Converter={StaticResource ToEmptyStringConverter}}"
                                                        Header="NoClasses"
                                                        HeaderTemplate="{StaticResource NoClassesHeaderTemplate}"
                                                        IsReadOnly="True" />
                            <toolkit:DataGridTextColumn Width="65"
                                                        MinWidth="65"
                                                        Binding="{Binding Ineligible}"
                                                        Header="Ineligible"
                                                        HeaderTemplate="{StaticResource SchoolStatusHeaderTemplate}"
                                                        IsReadOnly="True" />
                            <toolkit:DataGridTemplateColumn IsReadOnly="True">
                                <toolkit:DataGridTemplateColumn.CellTemplate>
                                    <DataTemplate>
                                    <TextBlock Text="Main Header Text" Grid.columnSpan="3" Grid.Row="0" Grid.Column="0"/>
                                    <TextBlock Text="Text 1" grid.Column="0" grid.Row="1"/>
                                    <TextBlock Text="Text 2" grid.Column="1" grid.Row="1"/>
                                    <TextBlock Text="Text 3" grid.Column="2" grid.Row="1"/>
                                    </DataTemplate>
                                </toolkit:DataGridTemplateColumn.CellTemplate>
                                <toolkit:DataGridTemplateColumn.HeaderTemplate>
                                    <DataTemplate>
                                        <TextBlock Text="Missing from FISAP Summary Part II Section F"
                                           TextWrapping="Wrap"
                                           Width="200"/>
                                    </DataTemplate>
                                </toolkit:DataGridTemplateColumn.HeaderTemplate>
                            </toolkit:DataGridTemplateColumn>
                        </toolkit:DataGrid.Columns>
                    </toolkit:DataGrid>
                    <CmcControls:WaitingControl x:Name="waitingControlOnGrid"
                                                HorizontalAlignment="Center"
                                                VerticalAlignment="Center" />
                </Grid>

我想在网格的最后添加预期结果 enter image description here

最佳答案

试试这个;->

如果您想要屏幕截图所描绘的方式,则只需使用 2 行和 3 列。 在第一行中使用 Grid.ColumnsSpan="3"定义 TextBlock,这将占用 3 列的空间,在第二行中定义每个不同列中的每个 TextBlock:

     <DataGrid ItemsSource="{Binding  FisapCorrections,RelativeSource={RelativeSource AncestorType=Window},UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}">
        <DataGrid.Columns>
        <DataGridTemplateColumn Width="200">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="150"/>
                            <RowDefinition Height="150"/>
                        </Grid.RowDefinitions>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="70" />
                            <ColumnDefinition  Width="70"/>
                            <ColumnDefinition Width="70"/>
                        </Grid.ColumnDefinitions>

                                        <TextBlock Text="Main Header Text" Height="100" Grid.ColumnSpan="3" Grid.Row="0" Grid.Column="0"/>

                            <TextBlock Text="Text 1" Height="100" Grid.Column="0" Grid.Row="1"/>
                                        <TextBlock Text="Text 2" Grid.Column="1" Grid.Row="1"/>
                                        <TextBlock Text="Text 3" Grid.Column="2" Grid.Row="1"/>

                    </Grid>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
        </DataGrid.Columns>
    </DataGrid>

关于WPF dataGrid 多列的 super 标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17781403/

相关文章:

c# - 此 View 列表不允许编辑项目

wpfdatagrid - 某些行在 DataGrid 中折叠,我在键盘导航中遇到问题

c# - VTK 渲染成 C#

c# - WPF:无法在 DataGrids 中滚动

WPF 如何将右侧的按钮与 x 个按钮对齐

c# - 如何在不知道何时完成的情况下显示进程的进展

.net - Visibility.Collapse 在 WPF 中不起作用

.net - 如何解决单选按钮组的绑定(bind)问题

wpf - 上下文菜单与弹出菜单

c# - RowEditEnding 事件获取空值