You may be able to do it this way:
first subclass InsertionRow and InsertionCell
public class MyInsertionCell : Xceed.Wpf.DataGrid.InsertionCell
{
public MyInsertionCell()
: base()
{
}
protected override CellEditor GetCellEditor()
{
Xceed.Wpf.DataGrid.DataGridControl parentDataGrid = Xceed.Wpf.DataGrid.DataGridControl.GetParentDataGridControl(this);
Xceed.Wpf.DataGrid.CellEditor _yourCellEditor = parentDataGrid.FindResource("YourCellEditor") as Xceed.Wpf.DataGrid.CellEditor;
if (this.FieldName.CompareTo("Column1") == 0)
{
return _yourCellEditor;
}
// and so on for the other columns
return base.GetCellEditor();
}
}
class MyInsertionRow : Xceed.Wpf.DataGrid.InsertionRow
{
protected override Cell CreateCell(Column column)
{
return new MyInsertionCell();
}
protected override bool IsValidCellType(Cell cell)
{
return cell is MyInsertionCell;
}
}
Then in your XAML for the DataGridControl do the following where local is the namespace where the above classes are defined (this example uses the fixed footers but you can define yours where ever you want it)
<xcdg:TableView.FixedFooters>
<DataTemplate>
<local:MyInsertionRow />
</DataTemplate>
</xcdg:TableView.FixedFooters>