我有一个DataGrid,我用
将用户输入的空行移到了顶部 ((IEditableCollectionView)MyGrid.Items).NewItemPlaceholderPosition =
NewItemPlaceholderPosition.AtBeginning;
但是当用户键入新行时,该行会在没有任何反馈的情况下进入底部(有时会在屏幕外),并且用户可能会认为他的新行刚刚消失。所以我想把它放在首位。
我想做点什么
MyGrid.Insert(0, newRow);
但我不知道在进入DataGrid时要覆盖什么来访问该行。现在我没有明确地将用户输入的行放入DataGrid,这会自动发生。
答案 0 :(得分:0)
以下是一个例子:
public ObservableCollection<MyDataItem> DataItems
{
get
{
List<MyDataItem> items = new List<MyDataItem>(5);
for (int i = 0; i < 5; i++)
{
items.Add(new MyDataItem { abc = abc[i], qrt = qrt[i], xyz = xyz[i] });
}
var observable = new ObservableCollection<MyDataItem>(items);
var view = CollectionViewSource.GetDefaultView(observable) as IEditableCollectionView;
view.NewItemPlaceholderPosition = NewItemPlaceholderPosition.AtEnd;
return observable;
}
}
XAML:
<DataGrid ItemsSource="{Binding DataItems}" CanUserAddRows="True" />