我很少用过DataGrid
并且对其添加行的能力一无所知,但从 WPF/MVVM 的角度来看,您无论如何都不需要它。通常在WPF/MVVM中,我们操作数据而不是UI控件,因此解决方案很简单。首先我们Bind
我们收集的数据(无论我们选择什么形式)DataGrid.ItemsSource
财产:
public ObservableCollection<DataItem> SomeDataCollection { get; set; }
...
<DataGrid ItemsSource="{Binding SomeDataCollection}" ... />
现在,如果我们想添加一个新项目到底部DataGrid
我们可以在代码隐藏/视图模型中执行此操作:
SomeDataCollection.Add(new DataItem());
然后,如果我们想将一个新项目添加到集合的开头,我们可以这样做:
SomeDataCollection.Insert(0, new DataItem());
当然,您需要实施INotifyPropertyChanged
在您的代码隐藏/视图模型中添加接口以使其工作,但(希望)您无论如何都会这样做。
更新>>>
抱歉,我误会你了。我找到了一个NewItemPlaceholderPosition枚举在 MSDN 上,由ItemCollection.IEditableCollectionView.NewItemPlaceholderPosition财产。不幸的是,这些链接的页面没有代码示例,所以我在在wpf datagrid中如何获得顶部的空白行?在 StackOverflow 上发布。来自@woodyiii在那篇文章中的回答:
var view = CollectionView.GetDefaultCollectionView(EmployeeList)
as IEditableCollectionView;
if(view!=null)
view.NewItemPlaceholderPosition = NewItemPlaceholderPosition.AtBeginning;
这确实意味着您必须使用CollectionView
让它发挥作用,但这似乎是唯一的方法......NewItemPlaceholderPosition
除了各种之外,枚举不被任何其他东西使用CollectionView
类。