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

时间:2013-11-07 03:22:41

标签: wpf datagrid

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

1 个答案:

答案 0 :(得分:2)

我很少使用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接口才能使其正常工作,但(希望)您无论如何都会这样做。


更新&gt;&gt;&gt;

对不起,我误解了你。我在MSDN上找到NewItemPlaceholderPosition EnumerationItemCollection.IEditableCollectionView.NewItemPlaceholderPosition Property使用了in wpf datagrid how to get the blank row on top?。不幸的是,那些链接的页面没有代码示例,所以我在StackOverflow上的{{3}}帖子中找到了一个。来自@woodyiii在该帖子中的回答:

var view = CollectionView.GetDefaultCollectionView(EmployeeList)
             as IEditableCollectionView;
if(view!=null)
  view.NewItemPlaceholderPosition = NewItemPlaceholderPosition.AtBeginning;

这确实意味着您必须使用CollectionView才能使其正常工作,但这似乎是唯一的方法...... NewItemPlaceholderPosition Enumeration除了各种CollectionView类。