/// <summary> /// Inserts item to <see cref="DataGrid" />. /// </summary> /// <param name="owner">The owner.</param> /// <param name="index">The index.</param> /// <returns> /// Returns <c>true</c> if insertion is successful, <c>false</c> otherwise. /// </returns> public override bool InsertItem(DataGrid owner, int index) { var list = owner.ItemsSource; if (list == null) { return false; } var itemType = TypeHelper.GetItemType(list); var newList = owner.CreateInstance(itemType) as IList; var innerType = TypeHelper.GetInnerTypeOfList(list); if (innerType == null) { return false; } if (owner.ItemsInRows) { if (newList != null) { for (var ii = 0; ii < owner.Columns; ii++) { newList.Add(owner.CreateInstance(innerType)); } if (index < 0) { list.Add(newList); } else { list.Insert(index, newList); } } } else { // insert/append one new element to each list. foreach (var row in list.OfType<IList>()) { var newItem = owner.CreateInstance(innerType); if (index < 0) { row.Add(newItem); } else { row.Insert(index, newItem); } } } return true; }
/// <summary> /// Inserts item to <see cref="DataGrid" />. /// </summary> /// <param name="owner">The owner.</param> /// <param name="index">The index.</param> /// <returns> /// <c>true</c> if insertion is successful, <c>false</c> otherwise. /// </returns> public override bool InsertItem(DataGrid owner, int index) { var list = owner.ItemsSource; if (list == null) { return false; } var itemType = TypeHelper.GetItemType(list); object newItem = null; if (itemType == typeof(string)) { newItem = string.Empty; } if (itemType == typeof(double)) { newItem = 0.0; } if (itemType == typeof(int)) { newItem = 0; } try { if (newItem == null) { newItem = owner.CreateInstance(itemType); } } catch { return false; } if (index < 0) { list.Add(newItem); } else { list.Insert(index, newItem); } return true; }