首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为WPF EventTrigger编写DataGridRow

为WPF EventTrigger编写DataGridRow
EN

Stack Overflow用户
提问于 2014-08-06 08:39:50
回答 2查看 356关注 0票数 0

我想在WPF DataGridRow上写一个触发器,如下所示-

当用户对该行的任何单元格进行任何更改时,应使用特定值更新同一行的最后一个单元格。

请帮忙..。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-12 05:08:18

我使用Brian Hinchey在以下链接- How to get property change notifications with EF 4.x DbContext generator上提供的解决方案解决了我的问题

票数 0
EN

Stack Overflow用户

发布于 2014-08-06 11:21:07

我不确定用扳机能不能做到这一点。

对于基于MVVM的解决方案,可以更改实体以实现IEditableObject。当您在DataGrid中提交一个单元格更改(例如关闭或按Enter键)时,实体的IEditableObject.EndEdit()方法将被调用。然后,您可以在那里更新最后一个单元格的绑定属性。

(出于某种原因,EndEdit()被调用了两次,这在IEditableObject与DataGrids一起使用时似乎是一个奇怪的错误。这个问题提到了here)。

如果希望更多地控制If /何时调用IEditableObject.EndEdit(),则可以使用DataGrid RowEditEnding和CellEditEnding事件。例如,下面的RowEditEnding事件处理程序代码将确保实体的EndEdit()方法只有在提交整个行(而不是在每个单元格提交之后)才被调用:

代码语言:javascript
复制
    private void RowEditEnding(object sender, DataGridRowEditEndingEventArgs e)
    {
        if (_isCommittingEdit || e.EditAction == DataGridEditAction.Cancel)
        {
            return;
        }

        if (e.EditAction == DataGridEditAction.Commit)
        {
            _isCommittingEdit = true;
            try
            {
                grid1.CommitEdit(DataGridEditingUnit.Row, true);
            }
            finally
            {
                _isCommittingEdit = false;
            }
        }
    }

我发现调用DataGrid.CommitEdit()会再次触发相同的事件,导致堆栈溢出,因此_isCommittingEdit变量将阻止这种情况发生。(我很想知道这是另一种怪癖还是我做错了什么事!)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25155794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档