C# WPF-如何获取新插入的行数据行网格

C# WPF-如何获取新插入的行数据行网格,c#,wpf,c#-4.0,C#,Wpf,C# 4.0,默认情况下,我的网格为空,我试图获取用户插入到我的网格中的行数据,在提交更改后,我必须知道如何获取,我尝试使用grid.SelectedItem,但它总是返回null 我的XAML代码如下 <DataGrid x:Name="grdInfo" Height="373" VerticalAlignment="Top" DockPanel.Dock="Top" Margin="0,10,0,0" RowEditEnding="grdInfoSave" AutoGenerateColumns=

默认情况下,我的网格为空,我试图获取用户插入到我的网格中的行数据,在提交更改后,我必须知道如何获取,我尝试使用grid.SelectedItem,但它总是返回null

我的XAML代码如下

 <DataGrid x:Name="grdInfo" Height="373" VerticalAlignment="Top" DockPanel.Dock="Top" Margin="0,10,0,0" RowEditEnding="grdInfoSave" AutoGenerateColumns="False">
            <DataGrid.Columns>
                <DataGridTextColumn Header="No" Binding="{Binding No}" Width="50" />
                <DataGridTextColumn Header="Description" Binding="{Binding Description}" Width="*" />
                <DataGridTextColumn Header="Total" Binding="{Binding Total}" Width="120" />
            </DataGrid.Columns>
 </DataGrid>
生成表的代码

 private void genTable()
 {
        DataTable dtInfo = new DataTable(); 

        dtInfo.Columns.Add(new DataColumn("No", Type.GetType("System.Int32")));
        dtInfo.Columns.Add(new DataColumn("Description", Type.GetType("System.String")));
        dtInfo.Columns.Add(new DataColumn("Total", Type.GetType("System.String")));

        grdInfo.ItemsSource = dtInfo.DefaultView;  
 }

我需要的是,当用户为
No
列输入1,苹果为描述,200为总计时,我希望获得整行数据。

您可以使用以下命令将新插入的行访问到datagrid

private void grdInfoSave(object sender, DataGridRowEditEndingEventArgs e )
 {
      if (e.EditAction == DataGridEditAction.Commit)
      {
        //Try to get the user inserted value and process it
        DataRow newrow= e.Row.DataContext as DataRow; // If datarow does not work, replace will required databind class.
        String new_desc = newrow["Description"].ToString();
        DataRowView row = (DataRowView)grdQuoteDetail.SelectedItem;
        int No = Convert.ToInt32(row["No"]);
      }
 }

Source-

用户在哪里输入数据?@AfzaalAhmadZeeshan在GUI中,我允许属性CanUserAddRow,这意味着用户可以自己添加行否,我的意思是,它是动态的吗?还有,您没有任何类来填充数据吗?@AfzaalAhmadZeeshan我已经发布了生成table.Row.DataContext的方法始终返回null
private void grdInfoSave(object sender, DataGridRowEditEndingEventArgs e )
 {
      if (e.EditAction == DataGridEditAction.Commit)
      {
        //Try to get the user inserted value and process it
        DataRow newrow= e.Row.DataContext as DataRow; // If datarow does not work, replace will required databind class.
        String new_desc = newrow["Description"].ToString();
        DataRowView row = (DataRowView)grdQuoteDetail.SelectedItem;
        int No = Convert.ToInt32(row["No"]);
      }
 }