将用户输入的行发送到DataGrid的顶部

本文关键字:DataGrid 顶部 用户 输入 | 更新日期: 2023-09-27 18:10:20

我有一个DataGrid,我用

将用户输入的空白行移动到顶部
 ((IEditableCollectionView)MyGrid.Items).NewItemPlaceholderPosition =
                                       NewItemPlaceholderPosition.AtBeginning;

但是,当用户键入新行时,该行会在没有任何反馈的情况下移到底部(有时离开屏幕),用户可能会认为他的新行只是消失了。所以我想把它放在最上面。

我想做一些像

MyGrid.Insert(0, newRow);

但我不知道重写什么来访问行,因为它进入DataGrid。现在我没有显式地将用户输入的行放入DataGrid,这是自动发生的。

将用户输入的行发送到DataGrid的顶部

下面是一个例子:

    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" />