The ItemsSource is for WPF. Use the DataSource and cast it to DataTable like this:
dt = (DataTable)DataGrid1.DataSource;
EDIT: And if you get into trouble with above approach, you can use a custom method like this:
private DataTable ToDataTable(DataGridView dataGridView)
{
    var dt = new DataTable();
    foreach (DataGridViewColumn dataGridViewColumn in dataGridView.Columns)
    {
        if (dataGridViewColumn.Visible)
        {
            dt.Columns.Add();
        }
    }
    var cell = new object[dataGridView.Columns.Count];
    foreach (DataGridViewRow dataGridViewRow in dataGridView.Rows)
    {
        for (int i = 0; i < dataGridViewRow.Cells.Count; i++)
        {
            cell[i] = dataGridViewRow.Cells[i].Value;
        }
        dt.Rows.Add(cell);
    }
    return dt;
}
And then use it:
var dataTable = ToDataTable(dataGridView1);
Also MoreLinq is a good choice in case the type of Datasource is a list. Check this solution to know how to use it: https://stackoverflow.com/a/42550827/2946329