如何使用DataGrid和MVVM添加行

本文关键字:MVVM 添加行 DataGrid 何使用 | 更新日期: 2023-09-27 18:18:27

我有一个WPF MVVM应用程序,其中包含一个可编辑的数据网格。我正在订阅DG SelectedItem事件到我的ViewModel中的属性。这对于修改现有记录并将更改保存到数据库非常有效。

但是,我如何知道何时正在创建新行?当我单击DG中的新行时,SelectedItem事件不会触发。在创建新行并单击现有行之后,SelectedItem事件触发,但EntityState不知道添加了一行。如何向DG内的DB添加新行?或者,是否有更好的方法来实现这一点?

这是我正在做的:

Xaml:

<DataGrid AutoGenerateColumns="False"
          ItemsSource="{Binding ContactList}"
          SelectedItem="{Binding SelectedItemContact,  UpdateSourceTrigger=PropertyChanged}"
          .....>

ViewModel:

public Contact SelectedItemContact
{
    get { return _selectedItemContact; }
    set
    {
        if (value != _selectedItemContact)
        {
                bool changesMade = Repository.Context.
                ObjectStateManager.
                GetObjectStateEntries(EntityState.Added |
                EntityState.Deleted |
                EntityState.Modified
                ).Any();
            if (changesMade)
            {
                Repository.Context.SaveChanges();
                MessageBox.Show("Changes Saved!");
            }
                _selectedItemContact = value;
            OnPropertyChanged("SelectedItemContact");
        }
}

如何使用DataGrid和MVVM添加行

这可以看作是下面语句的复制:WPF DataGrid -新行事件?