在“数据网格”视图中,空行添加条目很方便,但当列表很大时,空行很快就会丢失。是否可以将其默认位置从“数据网格”视图的底部更改为顶部?
mklgxw1f1#
我很少使用DataGrid,对它的行添加功能一无所知,但从WPF/MVVM的Angular 来看,您根本不需要它。通常在WPF/MVVM中,我们操作数据而不是UI控件,因此解决方案很简单。首先,我们将数据集合(以我们选择的任何形状)x1m1 n1 a到DataGrid.ItemsSource属性:
DataGrid
DataGrid.ItemsSource
public ObservableCollection<DataItem> SomeDataCollection { get; set; } ... <DataGrid ItemsSource="{Binding SomeDataCollection}" ... />
现在,如果我们想在DataGrid的底部添加一个新项,我们可以在代码隐藏/视图模型中执行此操作:
SomeDataCollection.Add(new DataItem());
然后,如果我们想在集合的开头添加一个新项,我们可以这样做:
SomeDataCollection.Insert(0, new DataItem());
当然,您需要在代码隐藏/view模型中实现INotifyPropertyChanged接口,以使其正常工作,但(希望)您无论如何都会这样做。更新〉〉〉抱歉,我误解了你的意思。我在MSDN上找到了一个ItemCollection.IEditableCollectionView.NewItemPlaceholderPosition Property使用的NewItemPlaceholderPosition Enumeration。不幸的是,那些链接的页面没有代码示例,所以我在StackOverflow上的in wpf datagrid how to get the blank row on top?帖子中找到了一个。根据@woodyiii在该帖子中的回答:
INotifyPropertyChanged
ItemCollection.IEditableCollectionView.NewItemPlaceholderPosition
NewItemPlaceholderPosition
var view = CollectionView.GetDefaultCollectionView(EmployeeList) as IEditableCollectionView; if(view!=null) view.NewItemPlaceholderPosition = NewItemPlaceholderPosition.AtBeginning;
这确实意味着您必须使用CollectionView才能使其工作,但这似乎是唯一的方法...除了各种CollectionView类之外,NewItemPlaceholderPosition枚举不被任何东西使用。
CollectionView
brc7rcf02#
这对我很有效:IEditableCollectionView cv =(IEditableCollectionView)grd计划.项目; cv.新项目占位符位置=新项目占位符位置.在开始;其中grdSchedule是数据网格的名称
2条答案
按热度按时间mklgxw1f1#
我很少使用
DataGrid
,对它的行添加功能一无所知,但从WPF/MVVM的Angular 来看,您根本不需要它。通常在WPF/MVVM中,我们操作数据而不是UI控件,因此解决方案很简单。首先,我们将数据集合(以我们选择的任何形状)x1m1 n1 a到DataGrid.ItemsSource
属性:现在,如果我们想在
DataGrid
的底部添加一个新项,我们可以在代码隐藏/视图模型中执行此操作:然后,如果我们想在集合的开头添加一个新项,我们可以这样做:
当然,您需要在代码隐藏/view模型中实现
INotifyPropertyChanged
接口,以使其正常工作,但(希望)您无论如何都会这样做。更新〉〉〉
抱歉,我误解了你的意思。我在MSDN上找到了一个
ItemCollection.IEditableCollectionView.NewItemPlaceholderPosition
Property使用的NewItemPlaceholderPosition
Enumeration。不幸的是,那些链接的页面没有代码示例,所以我在StackOverflow上的in wpf datagrid how to get the blank row on top?帖子中找到了一个。根据@woodyiii在该帖子中的回答:这确实意味着您必须使用
CollectionView
才能使其工作,但这似乎是唯一的方法...除了各种CollectionView
类之外,NewItemPlaceholderPosition
枚举不被任何东西使用。brc7rcf02#
这对我很有效:
IEditableCollectionView cv =(IEditableCollectionView)grd计划.项目; cv.新项目占位符位置=新项目占位符位置.在开始;
其中grdSchedule是数据网格的名称