C# 选择最后一项时,如何使用键盘Tab键将新项添加到XAML数据网格?

C# 选择最后一项时,如何使用键盘Tab键将新项添加到XAML数据网格?,c#,wpf,xaml,datagrid,C#,Wpf,Xaml,Datagrid,我有一个相当基本的Datagrid XAML绑定到CollectionViewSource <DataGrid ItemsSource="{Binding Source={StaticResource EditingItemsCollectionViewSource}}"/> 集合视图源绑定到具有3个数值的非常基本项的可观察集合。C显然 当我在最后一行的最后一个单元格中时,通过按键盘上的Tab键,我希望能够添加新行在此数据网格底部添加新项 这可能吗?一种可能的解决方案是以编程方式设

我有一个相当基本的Datagrid XAML绑定到CollectionViewSource

<DataGrid ItemsSource="{Binding Source={StaticResource EditingItemsCollectionViewSource}}"/>
集合视图源绑定到具有3个数值的非常基本项的可观察集合。C显然

当我在最后一行的最后一个单元格中时,通过按键盘上的Tab键,我希望能够添加新行在此数据网格底部添加新项


这可能吗?

一种可能的解决方案是以编程方式设置属性:

dataGrid.AllowUserToAddRows = true;
为了实现添加行功能,如果它最初设置为false,那么新行是不可见的。根据您的任务定义,可通过按Tab键触发,并添加任何附加条件:

private void dataGrid_PreviewKeyDown(object sender, KeyEventArgs e)
{
    try
    {
        if (e.Key == Key.Tab)
        {
            e.Handled = true;
            // your code    
        }
    }
    catch{}
}
您可能还希望通过添加事件处理过程为新创建的行项目设置一些默认值:

dataGrid.InitializingNewItem += new InitializingNewItemEventHandler(dataGrid_InitNewItem);
private void dataGrid_InitNewItem(object sender, InitializingNewItemEventArgs e)
{
        // your code
}
在这里可以找到将行添加到WPF DataGrid的其他示例实现:

此外,与您的描述相关,您可以将该项添加到基础ObservableCollection,以便它将自动显示在DataGrid中


希望这会有所帮助。致以最良好的祝愿,

啊,对不起,这已经设置好了:这不是同一个项目吗?是的,我已经在我的帖子中添加了解释。您需要将其设置为false,并且根据您的任务定义,如果选择了最后一行,则仅在Tab key press事件中才显示它。链接资源中有更多示例。致以最良好的祝愿,嗯,当我把它设置为真时,我应该看到底部有一个空行?即使设置为true,我也看不到这一点。请检查其他属性,例如IsReadOnly等。