gpt4 book ai didi

c# - 当实体集 ChangeTracker 发生更改时如何通知 UI

转载 作者:行者123 更新时间:2023-12-03 11:02:50 26 4
gpt4 key购买 nike

我创建了一个 WPF MVVM执行某些操作的应用程序CRUDEntity 的操作放。

在 UI 中,我有一个保存/提交 button ,我想做的是创建一个事件或notification在我的ViewModelViewEntity设置 ChangeTracker有任何更改并将其绑定(bind)到 IsEnabledbutton .

我怎么能做到这一点?

我知道我可以利用以下属性:

dbcontext.ChangeTracker.HasChanges();

或者
db.ChangeTracker.Entries().Any(e => e.State == EntityState.Added
|| e.State == EntityState.Modified
|| e.State == EntityState.Deleted);

我只是不确定如何实现它

最佳答案

我将在 ViewModel 上实现以下属性:

public bool dbHasChanges => dbcontext.ChangeTracker.HasChanges();
然后在 XAML 中绑定(bind)到它:
<Button IsEnabled="{Binding dbHasChanges}" />
然后,每当数据库更新时,就会在该属性上引发属性更改通知:
NotifyPropertyChanged("dbHasChanges");
这适用于仅在您的应用程序中更改数据库的情况(每当用户进行更改时,您都将执行上述代码)。
您还可以将其重构为一个方法,这样您就不会多次硬编码属性名称:
private void DBChangeOccured()
{
NotifyPropertyChanged("dbHasChanges");
}
然后你可以调用这个方法而不是 NotifyPropertyChanged .
更新
在 .NET Core 中,您可以使用以下方法,而不是使用单独的方法来防止对属性名称进行硬编码:
NotifyPropertyChanged(nameof(dbHasChanges));

关于c# - 当实体集 ChangeTracker 发生更改时如何通知 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48393303/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com