1、根据行、列得到单元格的数值:
string value=(DataGridName.Columns[M].GetCellContent(DataGridName.Items[N]) as TextBlock).Text
其中,DataGridName是前台DataGrid的名字,M,N分别代表所在的列和行号。value中是单元格中的值。
2、根据行、列设置单元格的数值:
(DataGridName.Columns[M].GetCellContent(DataGridName.Items[N]) as TextBlock).Text = "这里写值";
其中,DataGridName是前台DataGrid的名字,M,N分别代表所在的列和行号。给单元格中的值要先转为字符型。
3、以上是在知道数据所在行列号的情况下,如果要获得当前鼠标点击选中的行号:
int rownum = this.DataGridName.SelectedIndex;
正常情况下从1开始,如果没有选中的数据,为-1;结合前面两个方法可以读取到行中的单元格值。
同时SelectedIndex也是可以设置的,也就是可以通过给其赋值来控制当前选中哪一行。
4、获得当前选中行的单元格的值,网上查询到最多的一种方法是:
DataRowView mySelectedElement = (DataRowView)dataGrid1.SelectedItem;
string result = mySelectedElement.Row[0].ToString();
这种写法,编辑没问题,但运行进会报错,无法将选中项转化为DataRowView。
5、获得当前选中行的单元格的值,正确简单的做法是将其转化为控件所绑定集合所属的类。
比如 DataGrid绑定了一个名为ClassName的list集合。
那么获取它的当前选中行值如下:
ClassName sevalue = XAML_DataGrid.SelectedItem as ClassName;
XAML_DataGrid为控件的名字。
这里sevalue就可以像类的一个实例一样使用了,也就是通过 .(点)的形式获得字段的值。
6、如果选中的行有多行,可以通过如下方法获得选中的行号。
参考网友给出的方法 https://blog.csdn.net/weixin_41029722/article/details/90897858
7、DataGrid的变动事件会引发TabControl的SelectionChanged事件的问题。
private void TabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (e.Source is TabControl)
{
//do work when tab is changed
}
}