Wpf DataGrid 添加新行

问题描述 投票:0回答:2

在 Wpf DataGrid 底部有一个“空白新行”用于添加新行。 enter image description here

当我开始添加新行(输入“空白新行”)时,空白新行消失 enter image description here
因此,为了开始添加新行,我需要当前行中的 Tab Of(失去焦点)。

添加新行时如何让底部出现“空新行”?

c# wpf datagrid
2个回答
0
投票

将 Datagrid 的

CanUserAddRows
属性设置为
True


0
投票

这称为 NewItemPlaceHolder,类型为 MS.Internal.NamedObject。该构造不可用于比较。要识别 NewItemPlaceHolder ToString() 将返回“{NewItemPlaceHolder}”,这就是您必须测试的内容。如果您愿意,您也可以实现自己的。要回答您的问题,在行中第一个单元格的编辑结束时,DataGrid_CellEditEnding 将触发,您需要调用 DataGrid.CommitEdit(DataGridEditingUnit.Row, true)。第二个参数 true 导致编辑结束。进行调用后,它将导致 DataGrid_CellEditEnding 重新输入。作为解决方法,创建一个类成员 bool 字段 (IsEditCommit) 并按以下方式使用它:



    private bool 
        IsEditCommit = false;
 
    private void DataGrid_CellEditEnding
        (object sender, 
            DataGridCellEditEndingEventArgs e)
    {
        if (!IsEditCommit)
        {
            IsEditCommit =
                true;

            var datagrid = 
                (DataGrid)sender;

            if (e.EditAction !=
                    DataGridEditAction.Cancel)       
                
                datagrid.CommitEdit
                    (DataGridEditingUnit.Row, 
                        true);            

            IsEditCommit =
                false;
        }
    }


此效果将在第一次单元格编辑发生时生成 NewItemPlaceHolder,并将导致当前 NewItemPlaceHolder 转换为当前项目源的预期项目类型

© www.soinside.com 2019 - 2024. All rights reserved.