【问题标题】:DataGrid with header for row and column带有行和列标题的 DataGrid
【发布时间】:2016-03-08 13:26:51
【问题描述】:

我想根据以下 excel 网格创建一个具有行和列标题的 WPF Datagrid:

特别是,蓝色单元格是固定的,这意味着我认为它们需要成为标题。

注意我要创建一个包含每一行的List,T如下:

class T
{
    double ag;
    double fZero;
    double tcStar;
}

如何使用 DataGrid 创建它?

【问题讨论】:

标签: c# wpf datagrid


【解决方案1】:

使用DataGrid.RowHeaderTemplate DataGrid 控件有一个 RowHeaderTemplate 属性,该属性为 DataGridRowHeader 定义了 DataTemplate。对于列标题,请使用 ColoumnHeaderStyle。检查此 link。

<DataGrid ItemsSource="{Binding Countries}" AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Country" Binding="{Binding Name}"/>
    </DataGrid.Columns>
    <DataGrid.RowHeaderTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding DataContext.Continent, 
                        RelativeSource={RelativeSource AncestorType=DataGridRow}}"></TextBlock>
        </DataTemplate>
    </DataGrid.RowHeaderTemplate>
</DataGrid>

实际上这个示例为行中显示的每个国家/地区设置了对应的大陆。我认为这个link可能会对你有所帮助

【讨论】:

    【解决方案2】:

    您可以使用DataGridTemplateColumn 添加列标题。

      <DataGrid x:Name="dg" AutoGenerateColumns="False" >
            <DataGrid.Columns>
                <DataGridTemplateColumn Header="Ag" Width="SizeToCells" IsReadOnly="True">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            //add items
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
    <DataGridTemplateColumn Header="Fo" Width="SizeToCells" IsReadOnly="True">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            //add items
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
    <DataGridTemplateColumn Header="Tc" Width="SizeToCells" IsReadOnly="True">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            //add items
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
            </DataGrid.Columns>
        </DataGrid>
    

    您可以使用RowHeaderTemplate 添加行标题。

    【讨论】:

      猜你喜欢
      • 2011-08-18
      • 2012-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-13
      • 2016-12-15
      相关资源
      最近更新 更多