如何使用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");
}
}
这可以看作是下面语句的复制:WPF DataGrid -新行事件?