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

时间:2014-12-18 14:23:25

标签: c# wpf xaml datagrid

我有一个非常基本的Datagrid XAML绑定到CollectionViewSource。

<DataGrid ItemsSource="{Binding Source={StaticResource EditingItemsCollectionViewSource}}"/>

集合视图源绑定到具有3个数值的可观察的非常基本项集合。 C#显然。

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

这可能吗?

1 个答案:

答案 0 :(得分:0)

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

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添加行的其他示例实现:Wpf DataGrid Add new row

此外,与您的说明相关,您可以将该项目添加到基础ObservableCollection,因此它会自动显示在DataGrid

希望这会有所帮助。最好的问候,