我正在创建一个从WPF DataGrid继承的控件(CustomGrid)。无论何时使用CustomGrid,它都会将ItemsSource设置为Observable Collection。我添加的功能之一是能够从剪贴板粘贴数据,但是如果集合中当前没有足够的行,那么我想添加额外的行。这就是我被困住的地方。CustomGrid将用于不同的集合,因此我不能引用集合所基于的类。使用ItemsSource,我如何添加额外的行。
这是我到目前为止所尝试的…
private void AddNewRow()
{
IList itemsSource = this.ItemsSource as IList;
Type itemType = itemsSource.GetType().GenericTypeArguments[0];
object newRecord = Activator.CreateInstance(itemType);
itemsSource.Add(newRecord);
}
错误:系统。IndexOutOfRangeException: 'Index was outside the bounds of array.'
知道我可能做错了什么吗?
我在过去的24小时里一直在思考这个问题,得出的结论是这是不可能做到的。这将工作的唯一方式是,如果已经有数据在集合中,但如果有人将数据粘贴到DataGrid和集合是空的,那么它是不可能获得该集合所基于的对象。