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

时间:2014-06-26 14:33:33

标签: c# wpf datagrid

我有一个DataGrid,我用

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

但是当用户键入新行时,该行会在没有任何反馈的情况下进入底部(有时会在屏幕外),并且用户可能会认为他的新行刚刚消失。所以我想把它放在首位。

我想做点什么

MyGrid.Insert(0, newRow);

但我不知道在进入DataGrid时要覆盖什么来访问该行。现在我没有明确地将用户输入的行放入DataGrid,这会自动发生。

1 个答案:

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