C# 如何在WPF数据网格中循环列,从每个单元格获取数据

C# 如何在WPF数据网格中循环列,从每个单元格获取数据,c#,wpf,datagrid,C#,Wpf,Datagrid,我有一个代码可以通过循环datagrid的每个单元格来获取数据,但代码有一个错误,“对象引用未设置为对象的实例” 我认为原因可能是我不应该使用“grid.Columns[j].GetCellContent(data[I])作为TextBlock”。我想我应该从ItemsSource获得该列,而不是从datagrid 我知道“inti=0;I

我有一个代码可以通过循环datagrid的每个单元格来获取数据,但代码有一个错误,“对象引用未设置为对象的实例”

我认为原因可能是我不应该使用“grid.Columns[j].GetCellContent(data[I])作为TextBlock”。我想我应该从ItemsSource获得该列,而不是从datagrid

我知道“inti=0;I
private string GetDatagrid(DataGrid grid)
{
    var data = (ObservableCollection<ConfigViewModel>)grid.ItemsSource;
    StringBuilder dataStr = new StringBuilder();

    for (int i = 0; i < data.Count; i++)
    {

        for (int j = 0; j < grid.Columns.Count; j++)
        {
            TextBlock selectTextBlockInCell = grid.Columns[j].GetCellContent(data[i]) as TextBlock;

            string configVari= selectTextBlockInCell.Text; //This line comes the error!
            dataStr.Append(configVari);
            dataStr.Append("#");
        }
        dataStr.Remove(dataStr.Length - 1, 1);  
        dataStr.Append(@"\\");

    }

    return dataStr.ToString();
}
私有字符串GetDatagrid(DataGrid) { var数据=(ObservableCollection)grid.ItemsSource; StringBuilder dataStr=新的StringBuilder(); for(int i=0;igid.cloumns[j].GetCellContent(Object dataitem)返回框架元素在您的情况下,它可能返回除TextBlock之外的其他控件,因此您的强制转换不起作用,这就是TextBlock未获得初始化的原因,也是您获得未设置为对象实例的对象引用的原因。另一种可能性是单元格可能包含空值,这是因为网格。列[j]。GetCellContent(数据[i])不返回文本块,请尝试调试并检查它返回的类型