订阅自跟踪实体PropertyChanged事件
本文关键字:PropertyChanged 事件 实体 跟踪 | 更新日期: 2023-09-27 18:20:44
我正在使用自跟踪实体编写一个WPF应用程序。我在禁用/启用"保存"按钮时遇到问题,因为我的模型值已更改。通常,使用常规的实体框架模型,我可以简单地在ViewModel中订阅Model.PropertyChanged事件,然后为我的保存按钮RaisePropertyChanged,该按钮将检查验证和"禁用"或"启用"保存按钮。
出于某种原因,使用自跟踪实体时,我注意到Model.PropertyChanged事件被标记为受保护,因此我无法在ViewModel中直接订阅它。有没有办法在不修改T4模板的情况下订阅此事件??
protected virtual void OnPropertyChanged(String propertyName)
{
if (ChangeTracker.State != ObjectState.Added && ChangeTracker.State != ObjectState.Deleted)
{
ChangeTracker.State = ObjectState.Modified;
}
if (_propertyChanged != null)
{
_propertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
protected virtual void OnNavigationPropertyChanged(String propertyName)
{
if (_propertyChanged != null)
{
_propertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
event PropertyChangedEventHandler INotifyPropertyChanged.PropertyChanged{ add { _propertyChanged += value; } remove { _propertyChanged -= value; } }
private event PropertyChangedEventHandler _propertyChanged;
private ObjectChangeTracker _changeTracker;
我总是修改模板,使其不受保护。这是一个有原因的模板:)
我想另一种选择是在类上创建一个公共方法,该方法在内部引发PropertyChanged通知。
partial class MyModel
{
public RaiseEFPropertyChanged(string propertyName)
{
RaisePropertyChanged(propertyName);
}
}