我已经创建了一个WPF
MVVM
个应用,可以对CRUD
集进行一些Entity
操作。
在用户界面中,我有一个保存/提交button
,我希望它能在notification
中为ViewModel
创建一个事件或View
当Entity
设置ChangeTracker
有任何更改并将其绑定到IsEnabled
上的button
时。
我怎么能实现这个目标?
我知道我可以使用以下属性:
dbcontext.ChangeTracker.HasChanges();
或
db.ChangeTracker.Entries().Any(e => e.State == EntityState.Added
|| e.State == EntityState.Modified
|| e.State == EntityState.Deleted);
我只是不确定如何实施
答案 0 :(得分:2)
我将在ViewModel上实现以下属性:
public bool dbHasChanges => dbcontext.ChangeTracker.HasChanges();
然后在XAML中绑定它:
<Button IsEnabled="{Binding dbHasChanges}" />
然后,只要数据库更新,就会在该属性上引发属性更改通知:
NotifyPropertyChanged("dbHasChanges");
这适用于仅在应用程序中更改数据库的情况(无论何时用户进行更改,您都会执行上述代码)。
您还可以将此重构为方法,这样您就不会多次硬编码属性名称:
private void DBChangeOccured()
{
NotifyPropertyChanged("dbHasChanges");
}
然后您可以调用此方法而不是NotifyPropertyChanged
。