如何跟踪DataGrid WPF MVVM的更改

由Muchi

我有一个WPF / MVVM应用程序,我想在其中跟踪用户何时更改数据网格中的某些数据。DataGrid有一个ICollectionView作为源,由DataTable填充:

private ICollectionView _planningCollectionView;

public ICollectionView PlanningCollectionView
{
    get => _planningCollectionView;
    set
    {
        if (_planningCollectionView == value) return;
        _planningCollectionView = value;
        OnPropertyChanged();
    }
}

...
//_planningView is my DataTable
public MainViewModel()
{
    ...
    PlanningCollectionView = CollectionViewSource.GetDefaultView(_planningView);
    ...
}

目的是制作一个小的状态栏,使用户能够查看是否有未保存的更改。

没有未保存的更改 未保存的更改

最重要的是,我想验证用户是否没有将原始数据放回去。例如,如果某个单元在初始DataGrid加载时的值为“ 50”,并且用户将其更改为“ 100”,则状态应显示为“未保存的更改”。当用户将其更改回“ 50”时,状态应回到“没有未保存的更改”。

我的方法:

我尝试使用“ CellEditEnding”和“ RowEditEnding”事件来跟踪用户何时完成输入。这之后是一个InvokeCommandAction,它调用在MainViewModel中定义的命令。该命令仅指向一种方法,该方法仅设置了第一个DataTable的所有更改的DataTable

public void SetEdited()
{
    DataTable planningViewChanges = _planningView.GetChanges();
}

结果:

当我在方法中放置一个断点时,我看到在单击已编辑的单元格之后单击该断点。但是我认为,当我的断点停止时,该单元并没有完全结束结尾。

结果

当我查看方法并检查DataTable对象“ planningViewChanges”时,它为null。当我继续该应用程序并且该编辑在视觉上结束于该单元格时,我尝试更改另一个单元格,或者通过按钮调用我的Command,然后再次检查DataTable“ planningViewChanges”是否具有一行。因此很明显,将DataGrid中的数据提交到源DataTable的工作正常,但是在“ CellEditEnding”或“ RowEditEnding”事件之后并不能立即执行...

我的第二种方法

我搜索并浏览了许多其他可能与此问题类似的问题。一种方法是甚至在DataGrid上也使用“ LostFocus”,但是提交后也没有触发。当我尝试将UpdateSourceTrigger选项更改为“ LostFocus”或“ PropertyChanged”时,提交未在事件发生之前开始...

此外

我读过的另一种方法是使用自定义类的列表。但这不适合我的问题,因为DataGrid列的数目可以动态变化。

加成

我的问题

没有任何人知道如何获取这是一个编辑单元格后触发的事件,并在提交之后?还是有一种更适合MVVM模式的解决方案?关于类似问题的许多答案实际上并没有太多共通之处,每个人对于MVVM是什么样,不是都有自己的看法。

由Muchi

我发现了另一个在提交后立即触发的事件。事件“ CurrentCellChanged”有效,但必须谨慎对待。每当您更改当前选定的单元格(如您在名称上看到)时,它就会触发,即使您开始编辑该单元格也是如此。我在被调用的方法中进行了一些更改,因此不会每次都触发整个逻辑,但是仅当我想跟踪更改的单元格(行)时才执行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

WPF MVVM更改模型

来自分类Dev

WPF DataGrid,DataGrid上选定的行颜色SelectedMV在MVVM中更改

来自分类Dev

DataGrid选择更改的MVVM

来自分类Dev

如何使用MVVM在WPF DataGrid中获取选定项

来自分类Dev

如何动态更改wpf MVVM灯中usercontrol中存在的按钮(单击)上的userControl

来自分类Dev

如何动态更改wpf MVVM light中usercontrol中存在的按钮(单击)上的userControl

来自分类Dev

WPF MVVM:DataGrid的SelectedItem的显示视图

来自分类Dev

WPF DataGrid列总MVVM模式

来自分类Dev

WPF MVVM:DataGrid的SelectedItem的显示视图

来自分类Dev

WPF MVVM数据绑定嵌套Datagrid

来自分类Dev

在WPF MVVM中使用ICollectionView更新DataGrid

来自分类Dev

从 ViewModel 文件 MVVM WPF 刷新 DataGrid

来自分类Dev

WPF DataGrid列:如何管理值更改事件

来自分类Dev

WPF datagrid组合框列:如何管理选择更改事件?

来自分类Dev

WPF DataGrid列:如何管理值更改事件

来自分类Dev

WPF DataGrid:如何确定ComboBox选择更改所在的行的索引?

来自分类Dev

如何:更改DataGrid IsSelected背景(C#,WPF)

来自分类Dev

WPF如何引发从DataGrid绑定到ObservableCollection的单个属性更改

来自分类Dev

如何检测WPF中的UI更改的datagrid项源?

来自分类Dev

如何更改 WPF 中的 DataGrid 单元格悬停颜色?

来自分类Dev

在ModelView中更改样式(MVVM + WPF)

来自分类Dev

用户控件MVVM中的WPF更改视图

来自分类Dev

用户控件MVVM中的WPF更改视图

来自分类Dev

WPF MVVM 组合框选择已更改

来自分类Dev

在WPF MVVM模式中更改ListBox MVVM的ItemContainerStyle

来自分类Dev

如何关闭(使用复选框)使用CollectionViewSource实现的WPF / MVVM DataGrid分组?

来自分类Dev

使用MVVM,如何从DataTable动态生成WPF DataGrid列并显示按钮列?

来自分类Dev

MVVM中的WPF Datagrid Multi Selection完成事件。如何知道用户何时完成选择?

来自分类Dev

如何关闭(使用复选框)使用CollectionViewSource实现的WPF / MVVM DataGrid分组?

Related 相关文章

  1. 1

    WPF MVVM更改模型

  2. 2

    WPF DataGrid,DataGrid上选定的行颜色SelectedMV在MVVM中更改

  3. 3

    DataGrid选择更改的MVVM

  4. 4

    如何使用MVVM在WPF DataGrid中获取选定项

  5. 5

    如何动态更改wpf MVVM灯中usercontrol中存在的按钮(单击)上的userControl

  6. 6

    如何动态更改wpf MVVM light中usercontrol中存在的按钮(单击)上的userControl

  7. 7

    WPF MVVM:DataGrid的SelectedItem的显示视图

  8. 8

    WPF DataGrid列总MVVM模式

  9. 9

    WPF MVVM:DataGrid的SelectedItem的显示视图

  10. 10

    WPF MVVM数据绑定嵌套Datagrid

  11. 11

    在WPF MVVM中使用ICollectionView更新DataGrid

  12. 12

    从 ViewModel 文件 MVVM WPF 刷新 DataGrid

  13. 13

    WPF DataGrid列:如何管理值更改事件

  14. 14

    WPF datagrid组合框列:如何管理选择更改事件?

  15. 15

    WPF DataGrid列:如何管理值更改事件

  16. 16

    WPF DataGrid:如何确定ComboBox选择更改所在的行的索引?

  17. 17

    如何:更改DataGrid IsSelected背景(C#,WPF)

  18. 18

    WPF如何引发从DataGrid绑定到ObservableCollection的单个属性更改

  19. 19

    如何检测WPF中的UI更改的datagrid项源?

  20. 20

    如何更改 WPF 中的 DataGrid 单元格悬停颜色?

  21. 21

    在ModelView中更改样式(MVVM + WPF)

  22. 22

    用户控件MVVM中的WPF更改视图

  23. 23

    用户控件MVVM中的WPF更改视图

  24. 24

    WPF MVVM 组合框选择已更改

  25. 25

    在WPF MVVM模式中更改ListBox MVVM的ItemContainerStyle

  26. 26

    如何关闭(使用复选框)使用CollectionViewSource实现的WPF / MVVM DataGrid分组?

  27. 27

    使用MVVM,如何从DataTable动态生成WPF DataGrid列并显示按钮列?

  28. 28

    MVVM中的WPF Datagrid Multi Selection完成事件。如何知道用户何时完成选择?

  29. 29

    如何关闭(使用复选框)使用CollectionViewSource实现的WPF / MVVM DataGrid分组?

热门标签

归档