【问题标题】:WPF DataGrid - CellEditEnding event update dataWPF DataGrid - CellEditEnding 事件更新数据
【发布时间】:2012-11-22 15:57:29
【问题描述】:

我在 WPF 中的 DataGrid 上苦苦挣扎。我有一个绑定到它的 ObservableCollection。当用户进入第一个单元格时,其他单元格将相应更新。为此,我订阅了 CellEditEnding 事件以在第一个单元格更改后强制更新。

在这种情况下,我还会像这样更新 MyClass 的其他属性:

    private void DataGridTeilnehmer_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
    {
        if (!commiting)
        {
          commiting = true;
            DataGridTeilnehmer.CommitEdit(DataGridEditingUnit.Row, false);
            commiting = false;

            if (e.Column.DisplayIndex == 0)
            {
                MyClass data = (e.Column.GetCellContent(e.Row) as ContentPresenter).Content as MyClass;
                data.pass = "nothing";
            }
        }

问题是,Grid 不会自行更新,因此不会显示“nothing”,直到我进入绑定到包含“nothing”的属性“pass”的单元格的编辑模式。但我想立即展示它。

提前致谢,
弗兰克

PS:我一生中使用过许多(数据)网格,但 WPF 网格是我迄今为止遇到的最糟糕的。

【问题讨论】:

  • 你有没有在绑定字段Pass时提到过UpdateSourceTirgger。如果是,那么您可能没有在 MyClass for Pass 属性中定义 propertychanged 事件。
  • 你能在你绑定的地方显示dataGrid代码吗?
  • 您是否使用 Mvvm 来处理 DataGrid?如果是,那么您可以更新 DataGrid 行的 ViewModel,如果它是一个属性更改类,那么所有绑定都会更新,Datagrid 行也会更新。

标签: c# .net wpf datagrid


【解决方案1】:

正确的方式如下,目前在我的软件中使用这种方式

private void MyWPFFrid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
    {
        if (e.Column.SortMemberPath.Equals("EndDate"))
        {
            if (((MyObject)e.Row.Item).EndDate.Equals(DateTime.MinValue))
            {
                ((MyObject)e.Row.Item).Completed = 1;
                ((MyObject)e.Row.Item).CompletedDescription = "YES";
            }
            else
            {
                ((MyObject)e.Row.Item).Completed = 0;
                ((MyObject)e.Row.Item).CompletedDescription = "NO";
            }


            this.MyWPFFrid.CurrentItem = ((MyObject)e.Row.Item);



            if (!e.Row.IsEditing)
            {
                this.MyWPFFrid.Items.Refresh();
            }


        }
    }

【讨论】:

    猜你喜欢
    • 2011-12-08
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-31
    • 2013-04-16
    • 1970-01-01
    相关资源
    最近更新 更多