为了让每一行的第一列产生自动编号,我们需要捕获dataGrid1的LoadingRow事件,如 dataGrid1.LoadingRow += new EventHandler<DataGridRowEventArgs>(dataGrid1_LoadingRow); void dataGrid1_LoadingRow(object sender,DataGridRowEventArgs e) { int index = e.Row.GetIndex(); var cell = dataGrid1.Columns[0].GetCellContent(e.Row) as TextBlock; cell.Text = (index + 1).ToString(); } F5运行后点击增加按钮,你会发现数据源中新增的数据已经加入到DataGrid的新行中,并且第一列自动显示了该行的行号。 现在我们开始解决第二个问题,即从数据源删除数据时自动更新所有行号 现在GridView中再自定义一列,每列的显示一个按钮用来删除该条数据 <data:DataGridTemplateColumn> <data:DataGridTemplateColumn.CellTemplate> <DataTemplate> <Button Content="删除" Click="btnDel_Click" /> </DataTemplate> </data:DataGridTemplateColumn.CellTemplate> </data:DataGridTemplateColumn> 然后在.cs中处理btnDel_Click事件 private void btnDel_Click(object sender,RoutedEventArgs e) { var btn = sender as Button; var index = _personList.IndexOf(btn.DataContext as Person); _personList.RemoveAt(index); foreach (var item in dataGrid1.ItemsSource) { var txtBlock = dataGrid1.Columns[0].GetCellContent(item) as TextBlock; txtBlock.Text = (DataGridRow.GetRowContainingElement(txtBlock).GetIndex() + 1).ToString(); } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。