WPF DataGrid全行编辑

时间:2011-05-12 08:35:48

标签: wpf datagrid wpfdatagrid

我有一个WPF数据网格,可以满足我的需要,但每行中有两个可以编辑的单元格。编辑行时是否可以将这两行都置于编辑模式,然后在行编辑结束/行失去焦点时触发更新?目前,在编辑每个单元格之后,RowEditEnding将触发,并且用户必须等待UI在提交后重绘。我正在使用的代码是:

 private bool isManualEditCommit;
 private void dg_RowEditEnding(object sender, DataGridRowEditEndingEventArgs e)
        {
            if(e.EditAction!= DataGridEditAction.Commit)
                return;
            var newProd = dgLists.SelectedItem as IProduct;
            if(newProd==null)
                return;
                    worker = new BackgroundWorker();
                    worker.DoWork += (s, dwe) =>
                    {
            ... commit update
                    };
                    worker.RunWorkerCompleted += (s, rwe) =>
                    {
                        ... refresh grid
                    };
                    worker.RunWorkerAsync();
        }
    /// <summary>
    /// Commits edits when a cell edit ends.
    /// </summary>
    /// <param name="sender">The source of the event.</param>
    /// <param name="e">The <see cref="System.Windows.Controls.DataGridCellEditEndingEventArgs"/> instance containing the event data.</param>
    private void dg_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e) {
        if (e.EditAction == DataGridEditAction.Commit)
        {
            if (!isManualEditCommit)
            {
                isManualEditCommit = true;
                DataGrid grid = (DataGrid) sender;
                grid.CommitEdit(DataGridEditingUnit.Row, true);
                isManualEditCommit = false;
            }
        }

2 个答案:

答案 0 :(得分:1)

我退出使用DataGrid进行编辑。我使用ListView然后提供然后提供GridView作为ListView.View。在GridView中,您可以使用CellTemplates创建GridViewColumns。每个GridView行的最后一列是删除该行的按钮。我支持编辑模式,而不是支持浏览和编辑模式。应用程序移动得更流畅,我没有使用DataGrid时遇到的任何麻烦。

答案 1 :(得分:0)

完整行编辑是默认功能。每个单元格编辑更新的唯一原因是您已实现了dg_cellEditEnding方法。