我正在使用自我跟踪实体编写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;
答案 0 :(得分:0)
我总是修改模板以使其不受保护。这是一个模板,原因是:)
我认为另一种方法是在您的类上创建一个公共方法,在内部引发PropertyChanged通知。
partial class MyModel
{
public RaiseEFPropertyChanged(string propertyName)
{
RaisePropertyChanged(propertyName);
}
}