C# 是否从datagrid wpf获取所选记录?

C# 是否从datagrid wpf获取所选记录?,c#,wpf,datagrid,indexing,C#,Wpf,Datagrid,Indexing,我已经把桌子画好了。根据post field checkbox,如果选中该复选框,我会将其写入文件并从数据库中删除这些记录。如果未选中,则记录将保留在我的数据库中。问题是,当我尝试访问这些记录时,我会得到一个异常,可以找到该对象,因为我尝试使用datagrid.SelectedIndex访问它,它给我datagrid索引而不是record索引。有没有办法获得记录索引?我得到了自动索引,每个记录的唯一Id递增1 提前感谢如果您使用viewmodel或其他工具,只需使用命令和选定的datagridr

我已经把桌子画好了。根据post field checkbox,如果选中该复选框,我会将其写入文件并从数据库中删除这些记录。如果未选中,则记录将保留在我的数据库中。问题是,当我尝试访问这些记录时,我会得到一个异常,可以找到该对象,因为我尝试使用datagrid.SelectedIndex访问它,它给我datagrid索引而不是record索引。有没有办法获得记录索引?我得到了自动索引,每个记录的唯一Id递增1


提前感谢

如果您使用viewmodel或其他工具,只需使用命令和选定的datagridrow作为commandparameter即可。在命令中,您可以轻松访问下划线数据,检查Post属性和wirte文件,并从集合中删除行

<Buttons Command="{Binding WriteCommand}" CommandParameter="{Binding ElementName=MyDataGridCtrl, Path=SelectedItem}" />
如果您有一个DataTable作为数据源,那么您的命令可能如下所示

 private DelegateCommand<DataRowView> _writeCommand ;
 public ICommand WriteCommand
    {
        get
        {
            return this._writeCommand ??
                   (this._writeCommand = new DelegateCommand<DataRowView>(this.WriteCommandExecute, this.CanWriteCommandExecute));
        }
    }

 private bool CanEditDataCommandExecute(DataRowView rowToWrite)
    {
        return rowToWrite!= null && (bool)rowToWrite["Post"];//if post is a bool
    }

  private void EditDataCommandExecute(DataRowView rowToWrite)
    {
        if (!this.CanEditDataCommandExecute(rowToWrite))
            return;

        //do your stuff here
    }
我找到了答案,System.Windows.Controls.DataGrid DataGrid=发送方为System.Windows.Controls.DataGrid;DataGridRow row=DataGridRowdataGrid.ItemContainerGenerator.ContainerFromIteme.row.Item;BridgeDesktopApp.SalesOrder nn=SalesOrder行.Item;int xcxc=nn.orderId;