2011-12-19 57 views
1

我有一个包含可编辑DataGrid的WPF MVVM应用程序。我正在将DG SelectedItem事件订阅到ViewModel中的一个属性中。这适用于修改现有记录并将更改保存到数据库。如何使用DataGrid和MVVM添加行

但是,如何知道何时创建新行?当我点击DG中的新行时,SelectedItem事件不会触发。新行被创建后,我点击一个存在行,SelectedItem事件触发,但EntityState不知道添加了一行。 如何在DG中为我的数据库添加新行?或者,有没有更好的方法来实现这一目标?

这是我目前在做什么:

的XAML:

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

视图模型:

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"); 
     } 
} 

回答