DataGrid 重新定位将新行添加到顶部

bar*_*onm 1 wpf datagrid

在 DataGrid 视图中,空白行添加条目很方便,但当列表很大时很快就会丢失。您可以将其默认位置从 DataGrid 视图的底部更改为顶部吗?

She*_*dan 5

我很少使用 aDataGrid并且对它添加行的能力一无所知,但从 WPF/MVVM 的角度来看,无论如何你都不需要它。通常在WPF/MVVM中,我们操作数据而不是UI控件,因此解决方案很简单。首先,我们Bind将数据(以我们选择的任何形式)收集到该DataGrid.ItemsSource属性:

public ObservableCollection<DataItem> SomeDataCollection { get; set; }

...

<DataGrid ItemsSource="{Binding SomeDataCollection}" ... />
Run Code Online (Sandbox Code Playgroud)

现在,如果我们想在底部添加一个新项目,DataGrid我们可以在代码隐藏/视图模型中执行此操作:

SomeDataCollection.Add(new DataItem());
Run Code Online (Sandbox Code Playgroud)

然后,如果我们想将一个新项目添加到集合的开头,我们可以这样做:

SomeDataCollection.Insert(0, new DataItem());
Run Code Online (Sandbox Code Playgroud)

当然,您需要INotifyPropertyChanged在代码隐藏/视图模型中实现接口才能使其工作,但(希望)您无论如何都会这样做。


更新>>>

抱歉,我误会你了。我在 MSDN 上找到了一个由Property使用的NewItemPlaceholderPositionEnumeration。不幸的是,这些链接的页面没有代码示例,所以我在wpf datagrid 中找到了一个如何获取顶部的空白行?在 StackOverflow 上发布。来自@woodyiii在那篇文章中的回答:ItemCollection.IEditableCollectionView.NewItemPlaceholderPosition

var view = CollectionView.GetDefaultCollectionView(EmployeeList)
             as IEditableCollectionView;
if(view!=null)
  view.NewItemPlaceholderPosition = NewItemPlaceholderPosition.AtBeginning;
Run Code Online (Sandbox Code Playgroud)

这确实意味着您必须使用 aCollectionView才能使其正常工作,但这似乎是唯一的方法......NewItemPlaceholderPosition除了各种类之外,枚举不被任何其他东西使用CollectionView