WPF datagrid 添加行号
时间: 2023-09-10 20:13:42 浏览: 100
在 WPF DataGrid 中添加行号,可以使用以下两种方法:
1. 在 XAML 中定义行号列
可以在 DataGrid 中添加一个新列,用于显示行号。在 XAML 中,可以使用 DataGridTemplateColumn 和 MultiBinding 来实现,如下所示:
```xml
<DataGrid x:Name="dataGrid1">
<DataGrid.Columns>
<DataGridTemplateColumn Header="#" Width="50">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}, Path=Items.IndexOf(this) + 1}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<!-- 其他列 -->
</DataGrid.Columns>
</DataGrid>
```
上述代码中,定义了一个名为“#”的 DataGridTemplateColumn,宽度为50。该列的单元格使用 TextBlock 来显示行号,Text 属性绑定到 Items.IndexOf(this) + 1,表示当前行在 Items 集合中的索引值加1,即为行号。
2. 在代码中添加行号列
可以在代码中处理 DataGrid 的 LoadingRow 事件,为每一行添加一个新的列,用于显示行号。如下所示:
```csharp
private void dataGrid1_LoadingRow(object sender, DataGridRowEventArgs e)
{
e.Row.Header = (e.Row.GetIndex() + 1).ToString();
}
```
上述代码中,使用 LoadingRow 事件处理程序为每一行添加一个行头,行头的内容为当前行在 DataGrid 中的索引值加1。需要注意的是,需要将 DataGrid 的 RowHeadersVisible 属性设置为 true,才能显示行头。可以在 XAML 中或者在代码中设置该属性,如下所示:
```csharp
dataGrid1.RowHeadersVisible = true;
```
```xml
<DataGrid x:Name="dataGrid1" RowHeadersVisible="True">
<!-- 其他列 -->
</DataGrid>
```
阅读全文